PyQt5基础框架
前几天为了自己搞一个光学仿真集成GUI
界面,于是去研究了一下PyQt5
不得不说这个模块的使用性远远超过了tkinter
,强烈推荐,于是准备出一个专栏,记录一下PyQt5
学习中遇到的小问题。
这篇先来说说PyQt5
创建时候的基础框架。
代码如下
# -*- coding:utf-8 -*- import sys from PyQt5.QtWidgets import QMainWindow, QApplication class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.resize(600, 300) self.status = self.statusBar() self.status.showMessage("这是状态提示", 10000) self.setWindowTitle("MainWindow界面") if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_())
以上就是我们PyQt5
主界面的基本框架了,先创建一个类,使用这个类对QMainWindow
类进行继承。
其他语句的解释
-
self.resize(600,300)
:对MainWindow
进行尺寸调整,横向600
个像素点,纵向300
个像素点。 -
self.status = self.statusBar()
:创建一个状态栏对象 -
self.status.showMessage("这是状态提示", 10000)
:显示状态栏信息10000
毫秒,即10
秒钟, 其中第一个字符串参数"这是状态提示"
是最终显示在状态栏的信息,我们可以自由替换。注意:只有
当我们的鼠标在MainWindow窗口内悬停的时候才会显示该状态信息,并且如果我们想要状态栏一直显示某个信息提示,可以将第二个参数的10000改为-1即可。
-
self.setWindowTitle("MainWindow界面")
:设定MainWindow
主界面的名称。 -
app = QApplication(sys.argv)
:初始化PyQt5
中的各个部分,之后我们就可以调用模块中的各个元素。类似与Pygame
模块中的Initialization
部分。 -
sys.argv
:这个语句存在仅仅是为了将来我们可以在命令行中写入参数进行读取,如果我们不考虑在命令行中进行直接调用,可以将初始化程序改为app = QApplication([])
。 -
window = MainWindow()
:实例化我们定义好的窗口类对象。 -
window.show()
:这句话必须存在,否则运行时我们写好的Gui
界面不会显示。用来显示我们写好的Gui
界面。 -
sys.exit(app.exec_())
:sys.exit()
表示退出程序操作,app.exec_()
类似于tkinter
模块中定义Gui
界面时进行的Mainloop()
,即开始执行主循环体,配合sys.exit()
退出命令可以在我们退出程序时清空内存,达到洁净模式。
最终运行后的效果
如下:
PyQt5框架BUG
如图所示TreeWidget, 添加了事件监听itemSelectionChanged, 当点击port行不松开鼠标, 鼠标挪动到items后, 触发的是port行的事件, 光标却是停留在items, 然后再点击items时, 不会触发新的事件
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持IT俱乐部。