之前学习Python基础语法时在小作业中使用过tkinter,实现过一个GUI小程序,当时对Python GUI编程的思路没有什么理解,只是看了几个例子、调用了几个简单的控件实现了一些基本的内容。
几个星期前想写一个自己使用的GUI程序,写了一点代码之后发现自己已经把上次tkinter库编程经历中学过的东西忘记了,而且也记得那次编程过程很难受——自己想要的控件很难实现,即使勉强实现,界面也不太美观、使用起来很不方便。
由于上述总总原因,决定稍微认真的学一点PyQt5,把过程做一点记录,以后使用Python写程序也能更方便。
创建一个简单窗口
import sys
from PyQt5.QtWidgets import QApplication,QWidget
if __name__ == '__main__':
app = QApplication(sys.argv)
w = QWidget()
w.resize(700,800)
w.move(0,0)
w.setWindowTitle('new window')
w.show()
sys.exit(app.exec_())
运行效果如下:
我们对这段代码做一些解释:
- QApplication():此函数用于处理QWidget的初始化与收尾工作,其参数为sys.argv。
- sys.argv:此参数是一个列表,列表中的第一个元素是程序本身,后续元素是外部给予的参数。我们可以尝试将其print出来,在我们的这段程序中其结果是
['工作台2.py']
- QWidget:PyQt5中GUI编程的基类,是其它窗口和控件的父类。
- resize():方法:用于调整窗口大小。
- move():方法:用于设置窗口初始位置。
- setWindowTitle():方法:用于设置窗口标题。
- show():方法:用于展示窗口。
- sys.exit(app.exec_()):app.exec_()的作用是运行主循环、进行事件处理并在关闭窗口后将状态代码返回;而sys.exit()则将应用程序退出并返回n到父进程,其用法是sys.exit(n)。
换一种编程风格
在上一个例子中我们使用了简单的面向过程编程,现在我们使用另一种编程风格——面向对象来实现上述窗口,并使用一些新方法。
super().init()的作用
在下面的例子中我们要使用一行代码:super().__init__()
。这里我们先看看这行代码的作用:
我们先写一个简单的类:
class Person(