先说个比较坑的地方,这个书用的PyQt4+Python2写的,现在的都是PyQt5+Python3.这个书的代码下下来是不能直接用的,很多时候改写了,运行Form.show()后一闪就死了,Process finished with exit code 3 。其实就是里面许多老的方法新的不支持了。找到一个博客,把源码全改写了:PyQt5_basisworker_新浪博客
http://blog.sina.com.cn/s/articlelist_3257808393_14_1.html
第一部分: 前面和GUI编程没有直接关系,看了一下:
1、类编程: __init__ ,类的初始化函数。
2、动态函数和偏函数。大概看了一下。以前没怎么接触。还是比较有用的。
第二部分:GUI编程
1、信号和槽(signals and slots):默认的信号和槽。
使用《PYTHON QT GUI快速编程 PYQT编程指南》的例子,但是现在用的是Python3.5+PyQt5,原来的例子都不能直接用,举例来说 信号和槽的就改造了一下(标红的)
import sys from PyQt5.QtWidgets import (QApplication,QDialog,QSpinBox,QDial,QHBoxLayout) class Form(QDialog): def __init__(self,parent = None): super(Form,self).__init__(parent) dial = QDial() dial.setNotchesVisible(True) spinbox =QSpinBox() layout = QHBoxLayout() layout.addWidget(dial) layout.addWidget(spinbox) self.setLayout(layout) dial.valueChanged.connect(spinbox.setValue) # valueChanged 是Native signal ,不用加(int) spinbox.valueChanged.connect( dial.setValue) self.setWindowTitle("signals and slots") if __name__ == '__main__': app = QApplication(sys.argv) ex1 = Form() ex1.show() sys.exit(app.exec_())
2、对话框
简易、标准对话框用模态;智能对话框一般用非模态。
对话框和组件的一个很重要作用:输入数据的验证。
对话框的常用方法:
d.accept() d.reject()
d.exec_() modal
d.show() modaless
3、布局
4、利用QtDesginer来编辑
毕竟自己编辑界面太麻烦。还是用图形化的编辑界面方便。至于里面的信号和槽的关联和处理,这个链接说的还是比较好的:“基于QTdesigner的PyQt编程 - 简书,https://www.jianshu.com/p/962b572a216c ”“关于Qt的操作简单会几个比较常用而且典型的,如果需要深入那就需要就去查阅相关手册文档。对于这类工具基本就是够用就行,并不是我的主业”
对于自己的处理方式,其实还是一种不太符合事件处理的方式,而是一个个简单的函数处理方式来操作。
UI转译后的一段调用代码:
import MyQtTest,sys from PyQt5.QtWidgets import QWidget,QMainWindow,QApplication class CoperQt(QMainWindow,MyQtTest.Ui_MainWindow): def __init__(self): QMainWindow.__init__(self)
MyQtTest.Ui_MainWindow.__init__(self)
self.setupUi(self)
if __name__ == '__main__': app = QApplication(sys.argv) ex = CoperQt() ex.show() sys.exit(app.exec_())
作为简单应用,还需要学习的后续的三个课题简单使用:
数据库的链接处理;简单的通信处理;多线程处理。