pyqt5 qtdesigner,pyqt5 qtwidgets
一、界面设计注册预览:
图1.1 设计界面
界面文件可以在此下载为login.ui文件。
除了ui文件,资源可能还需要资源文件。
图像资源表图标(login.png):
的。qrc文件可以在这里下载。文件的内容如下。
in.png/filefileimages/app.png/file/qresource/RC C2。生成PyQt5代码2.1
3 pip3安装PyQt5 PyQt5安装完成后,可以运行。py文件。要使包文件成为独立的可执行文件,还必须安装pyinstaller。使用pip进行安装。
pip3安装pyinstaller或更高版本的环境基于window,Python版本为3.6.2。
注:使用pip3安装只支持Python3.5往后的版本,如果使用使用2.x版本的python,需要下载源码进行安装
2.2.生成py模块的过程类似于Qt的qmake命令,需要从ui文件生成相应的源文件,并迁移ui文件和。qrc文件到。py模块。
转换。ui到。py文件。可以使用pyuic5命令转换文件:py UIC 5 log in . UI-oui _ log in . py-oui _ log in . py,如果没有-o参数,则表示打印到ui _ login.py文件。
资源(。qrc)由pyrcc5命令转换:pyr cc5 Qt designer . qrc-oqt designer _ RC . py转换资源文件。文件名有命名规则。主文件名_ rc.py .其中主文件名必须是。qrc。否则会出现运行python文件时找不到qtdesigner_rc模块的问题。
2.3扩展UI_logindialog类生成python代码后,必须将UI_logindialog类与QMainWindow类关联起来。(注意:因为登录界面是用QMainWindow设计的,所以扩展也需要QMainWindow。)登录窗口
#编码来自pyqt5的3360 utf-8。qtwidgetsimportqmainwindowfrompyqt 5。qtguiimportqmouseeventfrompyqt 5 importui _ log inog ui _ log in . ui _ main window(:def _ _ init _(self):super)。_ init _ ) (self.setup).这个类扩展了QMAINWOW类和ui_login。Ui_MainWindow,QMAINWOW类是QtPy5提供的表单类,ui_login。Ui_MainWindow就是代码self.setupUI(self)的功能和c版的Qt一样。
2.4启动接口以上步骤只是封装了接口类,没有启动接口的地方。这里用app.py文件作为程序的入口。
importsysfrommyqt 5 . qtwidgetsimportqaapplicationimportloginif _ name _= _ _ main _ :app=qaapplicationwin . shapplid v):Qt程序的正常启动操作win=Login。LoginDialog)): 33660显示窗口sys.exit()):按照上面四行代码运行app。
直接运行python app.py就会启动。
图2.4.1 运行界面
2.5向按钮添加响应事件。和Qt一样,PyQt5使用‘信号和时隙’作为通信机制。
2.5.1在取消按钮中添加一个事件定义槽:
EANCLECLICKED (self): self.close))将“信号和时隙”:附加到__init。
def __init__(self ) :super(。_init__ ) (self.setupui ) se
LF)自我。mbtncancel . clicked . connect(self。oncancleclick)上面的代码实现了点击取消按钮退出程序。
2.5.2为登录按钮添加事件定义槽:
def log in clicked(self):name=self . mtextusername . text()passwd=self . mtext password . text()qmessagebox . information(none,登录提示,用户名: name 密码: passwd,qmessagebox.ok,qmessagebox.ok)在__init()__中添加连接“信号和插槽”:
DEF _ _ init _ _ (self): super()。_ _ init _ _()self . setupui(self)self . mbtncancel . clicked . connect(self . oncancleclick)self . mbtnlogin . clicked . connect(self . onloginclick)
2.6 Login.py完整代码如下#编码:来自PyQt5的utf-8 .QtWidgets从PyQt5导入QMainWindow,QMessageBoxfrom .Qt GUI从pyqt 5导入qmouseevent导入Qt导入ui_login类登录对话框(qmain窗口,ui _ log in .ui _ main window):def _ _ init _ _(self):super()._ _ init _ _()self。setupui(自我)自我。setwindowflag(Qt .Qt。frameleswindowhint)#隐藏窗口标题栏自我。mdragwindow=虚假的自我。mmousepoint=[]self。mbtncancel。点击了。连接(自我。oncanleclicked)自我。mbtnlogin。点击了。连接(自我。onloginclicked)def mouseMoveEvent(self,event):e=QMouseEvent(event)if self。mdragwindow:self。move(e . global pos()-self。mmousepoint)e . accept()def mousepseevent(self,event):e=QMouseEvent(event)if e . button()==Qt .Qt。左键:自己。mmousepoint=e . global pos()-self。pos()self。mdragwindow=True e . accept()def mouseReleaseEvent(self,event):self。mdragwindow=False def onLoginClicked(self):name=self。mtextusername。text()passwd=self。多行文字密码。text()qmessagebox。信息(无.登录提示, 用户名:名称密码: passwd,QMessageBox .好的,QMessageBox .ok)def onCancleClicked(self):self。关闭()自我。setwindowflag(Qt .Qt。无框窗口提示)可以把窗体的标题栏隐藏掉,为移动窗体,需要添加额外的代码:
def mouseMoveEvent(self,event):e=QMouseEvent(event)if self。mdragwindow:self。move(e . global pos()-self。mmousepoint)e . accept()def mousePressEvent(self,event):e=QMouseEvent(event)if e . button()==Qt .Qt。左键:自己。mmousepoint=e . global pos()-self。pos()self。mdragwindow=True e . accept()def mouseReleaseEvent(self,event): self.mDragWindow=False以上三个函数都是PyQt5的事件,在登录对话框类中重写了这三个函数,以实现无标题栏窗体的拖动功能。
图2.6.1 无标题的登录界面:
三。打包在窗子下,可以打包成。可执行程序的扩展名文件:
py安装程序。py登录。py ui _登录。py Qt designer _ RC。py-icon=app。ico-F:表示打包成单一文件-w:使用窗口模式,如果没有这个选项,生成的可执行程序的扩展名文件启动时会带有命令行窗口- icon=app.ico:设置应用程序的图标,该图标与窗体的上图标是区别的,此图标是在窗子文件夹显示时的图标。四。最后码源:https://gitee。com/msgy/pyqt 5-设计者