PyQt5GUI快速编程学习

先说个比较坑的地方,这个书用的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_())


作为简单应用,还需要学习的后续的三个课题简单使用:

  数据库的链接处理;简单的通信处理;多线程处理。



你可能感兴趣的:(技术人生)