环境:Pycharm 3.9
库:PySide6 6.1.0:提供了Qt6的API库
安装好环境和库后,开始介绍QT的第一个应用工程,点菜
- 新建一个order_menu.py文件
- 在头部引入下面几个库
import sys
import random
from PySide6 import QtCore, QtWidgets, QtGui
其中, QtCore, QtWidgets, QtGui是PySide6库中最重要的3个子模块。
QtCore提供核心的非GUI功能,如信号和槽、属性、模型的基类、序列化等等。
QtWidgets用GUI功能扩展QtCore。事件、窗口和屏幕、OpenGL和2D绘画,以及图像。
QtGui为应用程序提供现成的Widget,包括为用户界面提供图形元素。
- 定义一个名为Menus的类,继承了QtWidgets,同时在类中增加了 QPushButton 和 QLabel
class Menus(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.menu = ["Tomatoe", "Potatoe", "Pepper", "Cabbage"]
self.button = QtWidgets.QPushButton("Choose me!")
self.text = QtWidgets.QLabel("Vegetable")
self.layout = QtWidgets.QVBoxLayout(self)
self.layout.addWidget(self.text)
self.layout.addWidget(self.button)
self.button.clicked.connect(self.order)
@QtCore.Slot()
def order(self):
self.text.setText(random.choice(self.menu))
其中,_init_是对函数的初始化,在创建该类的实例时,会调用。
在_init_函数中定义了menu,button 和text 的变量。menu变量是一个列表。button是个按键,text是个标签,标签内容是"Choose me"
把button 和text放置到界面中,垂直布置
self.button.clicked.connect(self.order),是把button和order成员函数关联起来,一点击button就会调用order函数
而order成员函数的作用就是改变text的标签内容,内容是随机选取menu列表里的元素
- 主函数实例化类,并显示界面
if __name__ == "__main__":
app = QtWidgets.QApplication([])
menus = Menus()
menus .resize(100, 80)
menus .show()
sys.exit(app.exec())
app = QtWidgets.QApplication([])是在命令行调用窗口, sys.exit(app.exec())是进入窗口,作为固定代码,必须出现在主函数的开头和结尾
随后创建实例,并显示
- 运行程序后,显示窗口,创建菜单