第2篇-快速熟悉 PyQt5 与 Eric6 的极速 GUI 开发
一、目的
在安装好python3.7+PyQt5+Eric6前提下以实例的方式向大家展示PyQt5与Eric6的极速GUI开发,非常方便的实现界面与逻辑分离,满足python的极速GUI编程,只需要专注程序逻辑实现即可
二、步骤
配置Eric6
打开 Eric6
选择菜单栏 设置-首选项
在左侧列表中选择项目-多重项目,点击右侧图标后选定硬盘中的一个位置,我这里是F:\pyqt文件夹。选好后点击右下方的OK按钮。
简单配置后,我们正式开始体验极速GUI开发
实例
建立项目
打开Eric6,菜单栏中选择项目-新建
点击项目文件夹后面的图标,在F:\pyqt\目录下手动新建一个文件夹cw01点击保存即可
,
点击OK按钮后出现一个提示框,是否将已有文件添加到项目中?选择Yes
点击Yes后在弹出的文件类型关联对话框直接OK
观察程序主界面的标题栏发现显示cw01 – eric6。在项目浏览器的顶部源代码标签里自动为我们生成一个_init_.py文件,该文件中没有任何代码,我们不用去理会。
创建窗体
点击源代码标签右边的窗体标签,在标签下面的空白处右键点击,弹出的菜单选择新建窗体
弹出新建窗体对话框,可以选择其它窗体类型,这里我们使用默认对话框类型,点击OK按钮
在弹出的新建窗体保存对话框中可以看到程序已将路径定位到项目文件夹下,输入文件名后点击保存按钮
在Eric6的窗体标签下可以看到程序已自动创建了login_01.ui文件
设计窗体
点击上一步的保存按钮后,计算机会直接打开Qt设计师,并自动将login_01.ui加载到程序中
在左侧的Widget Box里找到Push Button等控件,用鼠标左键按住该控件不放,拖拽到login_01.ui的设计窗体。拖拽1个Push Button控件和两个label以及两个单行输入框到窗体
在程序的右侧观察对象查看器与属性编辑器。使用对象查看器可以快速选取窗体中的控件,属性编辑器可以编辑修改窗体、控件的各种属性。
利用对象查看器选择我们刚拖拽的2个控件,分别将它们的objectName属性更改成:
- 左边PushButton:login_click
- 右边PushButton:Button_close
点击工具栏中的保存按钮后关闭Qt设计师程序
编译测试
回到Eric6中,右键点击login_01.ui文件,在弹出的菜单中选择编译窗体(eric6不小心关闭的话,需要手动点击打开项目-右键点击添加窗体)
稍等片刻后程序会提示编译成功
返回源代码标签可以发现项目中多了一个Ui_login_01.py.py文件,双击该文件可以查看我们设计好的窗体代码
点击菜单栏的开始-运行脚本(或直接按键盘F2键)
在弹出的运行脚本对话框直接OK
OK后即可看到我们刚在Qt设计师中设计的窗体
进一步完善程序
到现在我们没有编写一句代码即可实现了程序的登录页面
接下来我们手动给取消按钮添加事件命令
在Eric6中的项目浏览器中找到Ui_login_01文件,右键点击该文件,弹出菜单中选择生成对话框代码
在弹出的窗体代码产生器窗口中点击新建
回到窗体代码产生器窗口后展开Button_close(QPushButton),勾选on_Button_close_clicked(),点击OK
在项目浏览器中可以看到源代码标签下又多了一个login_01.py文件
双击该文件查看程序内容。若现在F2,程序将会报错,将
from .Ui_login_01 import Ui_Dialog
中.Ui前面的点去
from
Ui_login_01 import Ui_Dialog
保存后若F2,发现还是不行,程序一闪而过。给源码添加以下内容
保存后F2,没问题了,可以点击确定按钮后还是会报错,是因为我们还没有告诉程序点击确定按钮后程序做出什么反应,修改on_login_click_clicked函数如下
保存后F2,点击登录后Label内容显示会变成这是我的第一个 PyQt5 程序,一切正常
后记:后续pyqt技术点将会在续集里慢慢补充
代码贴附
1 # -*- coding: utf-8 -*- 2 3 """ 4 Module implementing login_01. 5 """ 6 import sys 7 from PyQt5.QtCore import pyqtSlot 8 from PyQt5.QtWidgets import QDialog, QApplication 9 10 from Ui_login_01 import Ui_Dialog 11 12 13 class login_01(QDialog, Ui_Dialog): 14 """ 15 Class documentation goes here. 16 """ 17 def __init__(self, parent=None): 18 """ 19 Constructor 20 21 @param parent reference to the parent widget (defaults to None) 22 @type QWidget (optional) 23 """ 24 super(login_01, self).__init__(parent) 25 self.setupUi(self) 26 27 @pyqtSlot() 28 def on_login_click_clicked(self): 29 """ 30 Slot documentation goes here. 31 """ 32 self.label.setText('PyQt5 程序') 33 if __name__ == '__main__': 34 app = QApplication(sys.argv) 35 dlg = login_01() 36 dlg.show() 37 sys.exit(app.exec_())
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/15600911.html