
QML 是一种描述性语言(declarative language),它可以让您使用传统的言语快速开发应用。下面介绍利用 PyQt5 与 QML 快速开发 GUI。
首先,创建一个名为 viewqml 的 QML 文件:
该文件描述的是“绿色的矩形框”,“文本为:Hello World”。接下来要使用 PyQt5 获取并创建 GUI:
效果:
Python进行GUI开发的库其实很多,下面我简单介绍几个不错的库,感兴趣的朋友可以自己尝试一下,实验环境win10+python36+pycharm50,主要内容如下:
tkinter
这个就不用多说了,python自带的GUI开发标准库,对于开发小型简单的应用来说,完全可以了,开源、跨平台,使用起来非常方便,下面我简单测试一下,主要代码如下:
点击运行程序,效果如下,一个窗口一个Label标签:
easygui
这个是基于tkinter的一个窗口GUI库,可以快速创建窗口对话框,包括常见的登陆对话框、注册对话框等,下面我简单介绍一下这个库的安装和使用:
1首先,安装easygui,这个直接在cmd窗口输入安装命令“pipinstalleasygui”就行,如下:
2安装完成后,我们就可以直接编写代码进行测试了,主要代码如下,非常简单:
点击运行这个程序,效果如下:
kivy
这是一个跨平台的GUI应用程序开发库,可以用来开发安卓、苹果应用,一套程序,可以处处运行,下面我简单介绍一下这个库的安装和使用:
1首先,安装kivy,这个直接按官方教程安装就行,如下:
2安装完成后,就可以直接编写代码进行测试了,主要代码如下,非常简单:
点击运行程序,效果如下,这里你可以将其打包为手机应用,安装到手机上:
wxpython
这也是一个免费、跨平台的PythonGUI开发库,相比较前面的tkinter来说,功能更为强大,控件也更多,下面我简单介绍一下这个库的安装和使用:
1首先,安装wxpython,这个也直接在cmd窗口输入命令“pipinstallwxpython”就行,如下:
2安装完成后,我们就可以直接编写相关代码进行测试了,主要代码如下,非常简单,一个简单的文本编辑器:
点击运行这个程序,效果如下:
pyqt
这个Qt的一个Python接口库,借助于Qt强大的用户界面,Python也可以快速开发出GUI程序,组件更多,也更方便,只要你有一定的Qt基础,很快就能掌握这个库的使用,下面我简单介绍一下这个库的安装和使用:
1首先,安装pyqt,这个直接在cmd窗口输入安装命令“pipinstallpyqt5”就行,如下,安装需要稍微等待一会儿:
2安装完成后,我们就可以直接编写代码进行测试了,如下,一个简单的计算器:
点击运行这个程序,效果如下:
至此,我们就介绍完了这5个PythonGUI库。总的来说,这5个库使用起来都非常不错,如果你的应用界面比较简单,功能要求不高,可以选择tkinter和easygui,如果界面比较复杂,功能要求比较复杂,可以考虑使用wxpython或pyqt,当然,你也可以使用其他GUI库,像pygame等,根据实际项目需求而定,网上也有相关资料和教程,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言。
很早之前,学习Python web编程的时候,就涉及一个Python的urllib。可以用urlliburlopen(“url”)。read()可以轻松读取页面上面的静态信息。但是,随着时代的发展,也来越多的网页中更多的使用javascript、jQuery、PHP等语言动态生成页面信息。因此,用urllib再去抓取页面HTML就不足以达到我们想要的效果。
解决思路:
有一个思路最为简单的思路可以动态解析页面信息。urllib不可以解析动态信息,但是浏览器可以。在浏览器上展现处理的信息其实是处理好的HTML文档。这为我们抓取动态页面信息提供了很好的思路。在Python中有一个很有名的图形库——PyQt。PyQt虽然是图形库,但是他里面 QtWebkit。这个很实用。谷歌的Chrome和苹果的Safari都是基于WebKit内核开发的,所以我们可以通过PyQt中得QtWebKit 把页面中的信息读取加载到HTML文档中,再解析HTML文档,从HTML文档中提取我们想用得信息。
作者本人实用Mac OS X。应该在Windows和Linux平台也可以采用相同的办法。
1、Qt4 library
Library,而不是Creator。Library在Mac的默认安装路径下,应该是/home/username/Developor/,不要改变Qt4的默认安装路径。否则可能安装失败。
官方网址:>
tableWidget_itemClicked(QTableWidgetItem item)
这里的item就是单击的项
还有获取当前项: ui->tableWidget->currentItem();
通过实现任意两个经纬度计算两点之间的距离为例子
程序生成截图:
#以下是GUI图形界面的创建
from PyQt5import QtCore, QtGui, QtWidgets
from mathimport
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindowsetObjectName("MainWindow")
MainWindowresize(800, 599)
selfcentralwidget = QtWidgetsQWidget(MainWindow)
selfcentralwidgetsetObjectName("centralwidget")
selflabel_2 = QtWidgetsQLabel(selfcentralwidget)
selflabel_2setGeometry(QtCoreQRect(70, 90, 41, 16))
selflabel_2setObjectName("label_2")
selflabel_5 = QtWidgetsQLabel(selfcentralwidget)
selflabel_5setGeometry(QtCoreQRect(70, 150, 41, 9))
selflabel_5setObjectName("label_5")
selflabel_6 = QtWidgetsQLabel(selfcentralwidget)
selflabel_6setGeometry(QtCoreQRect(50, 230, 41, 9))
selflabel_6setObjectName("label_6")
selflabel_3 = QtWidgetsQLabel(selfcentralwidget)
selflabel_3setGeometry(QtCoreQRect(270, 90, 41, 16))
selflabel_3setObjectName("label_3")
selflabel_7 = QtWidgetsQLabel(selfcentralwidget)
selflabel_7setGeometry(QtCoreQRect(270, 150, 41, 9))
selflabel_7setObjectName("label_7")
selflineEdit = QtWidgetsQLineEdit(selfcentralwidget)
selflineEditsetGeometry(QtCoreQRect(50, 110, 71, 31))
selflineEditsetObjectName("lineEdit")
selflineEdit_2 = QtWidgetsQLineEdit(selfcentralwidget)
selflineEdit_2setGeometry(QtCoreQRect(50, 170, 71, 31))
selflineEdit_2setObjectName("lineEdit_2")
selflineEdit_3 = QtWidgetsQLineEdit(selfcentralwidget)
selflineEdit_3setGeometry(QtCoreQRect(250, 110, 71, 31))
selflineEdit_3setObjectName("lineEdit_3")
selflineEdit_4 = QtWidgetsQLineEdit(selfcentralwidget)
selflineEdit_4setGeometry(QtCoreQRect(250, 170, 71, 31))
selflineEdit_4setObjectName("lineEdit_4")
selflineEdit_5 = QtWidgetsQLineEdit(selfcentralwidget)
selflineEdit_5setGeometry(QtCoreQRect(80, 220, 71, 31))
selflineEdit_5setObjectName("lineEdit_5")
selfpushButton = QtWidgetsQPushButton(selfcentralwidget)
selfpushButtonsetGeometry(QtCoreQRect(170, 300, 56, 17))
selfpushButtonsetObjectName("pushButton")
MainWindowsetCentralWidget(selfcentralwidget)
selfmenubar = QtWidgetsQMenuBar(MainWindow)
selfmenubarsetGeometry(QtCoreQRect(0, 0, 800, 18))
selfmenubarsetObjectName("menubar")
MainWindowsetMenuBar(selfmenubar)
selfstatusbar = QtWidgetsQStatusBar(MainWindow)
selfstatusbarsetObjectName("statusbar")
MainWindowsetStatusBar(selfstatusbar)
selfretranslateUi(MainWindow)
selfpushButtonclickedconnect(selfbtnshanbing_click)
QtCoreQMetaObjectconnectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCoreQCoreApplicationtranslate
MainWindowsetWindowTitle(_translate("MainWindow", "MainWindow"))
selflabel_2setText(_translate("MainWindow", "经度"))
selflabel_5setText(_translate("MainWindow", "经度"))
selflabel_6setText(_translate("MainWindow", "距离"))
selflabel_3setText(_translate("MainWindow", "经度"))
selflabel_7setText(_translate("MainWindow", "经度"))
selfpushButtonsetText(_translate("MainWindow", "确定"))
#以下是btnshanbing_click信号的槽函数
def btnshanbing_click(self):
#以下是将文本框里面的内容读取出来同时将里面的类型转换为浮点型
a=float(selflineEdittext())
c=float(selflineEdit_2text())
b=float(selflineEdit_3text())
d=float(selflineEdit_4text())
#以下是经纬度计算公式
e=(acos(sin(b pi /180) sin(d pi /180) + cos(c pi /180 - a pi /180) cos(b pi /180) cos(d pi /180)))6371004
#以下是将计算的结果生成在LineEdit_5里面去,但是要注意的是必须将计算的结果转换为字符型,否则程序运行不起来
selflineEdit_5setText(str(e))
主程序:
selflineEdittext():读取文本框里面的内容,但是要做计算必须转换为float(selflineEdittext())浮点型才能做运算,否则不能运算
selflineEdit_5setText(str()):将计算的结果生成在另一个文本框里面必须转换为字符型,否则程序会报错。
综上所述:lineEdittext()的返回类型为文本型
你可以随时添加子控件或布局到此布局中,但在将其插入父布局之前,整个布局都不会执行。
QGridLayout 通过其父布局或 parentWidget() 获取可用空间,将其划分为行和列,并将其管理的每个窗口小部件放入正确的单元格中。
每列具有最小宽度和拉伸系数。最小宽度是使用 setColumnMinimumWidth() 设置的值与该列中所有控件的最小宽度之中的最大值。拉伸因子使用 setColumnStretch() 设置,并确定列将超过其必要最小值的可用空间量。
通常,使用 addWidget() 将每个托管控件或布局放入自己的单元格中。使用 addItem() 和 addWidget() 的行和列跨越重载,窗口小部件也可能占用多个单元格。如果这做,QGridLayout将猜测如何在列/行上分配大小(基于拉伸因子)。
使用 removeWidget() 可以从布局中删除控件。或者在控件上使用 hide() 也可以有效地将其隐藏,直到使用 show() 。
上图中第 0、2 和 4 列均由一个 QLabel 、一个 QLineEdit 和一个 QListBox 组成,第 1 列和第 3 列则是使用 setColumnMinimumWidth() 创建的占位符。第 0 行包含三个 QLabel 对象,第 1 行包括三个 QLineEdit 对象,第 2 行包括三个 QListBox 对象。
请注意,上图中列和行的宽高并不一定相同。如果希望两列具有相同的宽度,则必须自己将最小宽度和拉伸系数设置为相同。您可以使用 setColumnMinimumWidth() 和 setColumnStretch() 执行此 *** 作。
如果 QGridLayout 不是顶级布局(即,不管理所有窗口小部件的区域和子窗口),则必须在在创建之后对其执行任何 *** 作之前,将其添加到其父布局。添加布局的常规方法是在父布局上调用 addLayout() 。
QGridLayout还包括两个边距宽度:contentsMargins 和 spacing() 。contentsMargins 是 QGridLayout 四边的保留空间的宽度。 spacing() 是相邻框之间自动分配的间距的宽度。
contentsMargins 默认值由 style 提供,子控件默认为 9,窗口为 11。spacing 默认与顶级布局的 margin 宽度相同,或与父布局的相同。
以上就是关于PyQt5 与 QML全部的内容,包括:PyQt5 与 QML、Python如何进行GUI桌面开发有哪些不错的库可以推荐、Mac下如何用python读取iMessage信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)