前言本文详细介绍了如何在Window平台上用纯代码(不用QtDesigner)开发一个简单的QtforPython入门级GUI应用(含详细代码分析)tool)),让读者有一个基本的感受,供QtforPython初学者参考。注:本系列以PySide6为例,原则上也适用于PyQt6(只需将代码中import语句中的PySide6换成PyQt6即可)。1.介绍开发环境已经搭建好了,下面我们通过开发一个简单的示例程序来初步探索一下。本示例程序虽然简单,但会涉及到以下内容,希望能帮助初学者对使用PySide6开发PythonGUI应用程序的代码框架有一个初步的印象。如何导入一个PySide6模块(或类)如何创建一个应用程序(QApplication)对象如何创建一个标签(QLabel)对象作为主窗口,并在构建时设置其相关属性,并使用Qt样式表设置标签属性。如何设置主窗口的标题(即选项卡)如何显示主窗口(即选项卡)如何运行应用程序2.示例目标和原型我们确定应用程序的预期目的并给出其原型。1.示例目标:本示例的目标是创建一个PythonGUI应用程序,其中在主窗体中居中(水平和垂直)显示一段蓝色的文本信息,文本的大小和颜色保持不变窗口被拉伸时没有变化,但它的位置(水平和垂直)保持在主窗体的中心。主窗体标题为“PySide6示例程序”。2.示例原型:在编写GUI应用程序之前,一般建议勾勒出GUI框架(窗体和组件的布局等)。本例原型如下:样例原型三、样例代码及运行1、编辑代码使用代码编辑器编辑样例代码并保存为文件(如:C:\MyPySide6\MyPySide6App1.py)。fromPySide6.QtWidgetsimport(QApplication,QLabel)fromPySide6.QtCoreimportQtapp=QApplication([])label=QLabel("第一个用PySide6开发的GUI应用!",alignment=Qt.AlignCenter)label.setStyleSheet("color:blue;font:bold;font-size:15px;")label.setWindowTitle("PySide6示例程序1")label.show()app.exec_()2.通过命令模式从控制台终端运行程序(或者直接在VisualStudio中点击代码主窗体上的运行按钮)运行示例程序(一般先进入代码所在目录):C:\MyPySide6>pythonMyPySide6App1.py如果运行顺利,应该会出现如下程序窗口(你可以试试拉伸Window看看效果):程序运行窗口怎么样?感觉还不错,仅仅8行Python代码,就可以生成一个看起来还行的GUI应用。相信能大大增强大家在接下来的QtforPython开发之旅中的信心。4.什么是代码分析?看不懂上面的代码!没关系,我们才刚刚开始,还没有学到很多知识。那么我将对上面的代码进行更详细的分析,希望能帮助大家理解和掌握这些代码。(1)首先从PySide6.QtWidgetsimport(QApplication,QLabel)导入相关模块(或类),PySide6模块中的子模块提供相关QtAPI的访问。由于本例后续代码中会用到PySide6.QtWidgets.QApplication类和PySide6.QtWidgets.QLabel类,因此QApplication类和QLabel类必须从PySide6.QtWidgets模块中引入。注:还有其他几种导入方式:注1:您可以根据个人习惯选择具体的导入方式。我倾向于选择初始导入方式。#从PySide6.QtWidgets模块导入所有类,后续代码可以直接使用PySide6.QtWidgets模块的相关类*#导入PySide6.QtWidgets模块,后续代码可以直接使用相关类importPySide6.QtWidgets#从PySide6库导入QtWidgets模块,后续代码当使用相关类,需要从PySide6导入QtWidgets添加对应的模块名注2:在PySide6中,一般来说,QtXxxx代表Qt模块,QXxxxxx代表Qt模块中的类。注3:关键字import后面可以跟单个或多个类(用逗号隔开),带括号也可以不带。注4:如果要使用PyQt6模块,只需将代码中import语句中的PySide6替换为PyQt6即可。(2)其次,创建应用对象app=QApplication([])使用QApplication类创建应用实例对象app,括号中的[]表示构造不包含传递参数。注1:QApplication是管理QtGUI应用程序的控制流和主要设置的类。任何QtGUI应用程序都必须包含QApplication类的实例对象。对于非GUIQt应用程序,可以使用QCoreApplication类。注2:由于Qt可以从命令行接收参数,所以在构造时可以将任意参数传递给QApplication对象(但注意需要导入sys模块)importsysapp=QApplication(sys.argv)(3)接下来创建一个标签对象作为主要形式label=QLabel("第一个使用PySide6开发的GUI应用程序!",alignment=Qt.AlignCenter)label.setStyleSheet("color:blue;font:bold;font-size:15px;")通常应用程序的主窗体是使用QMainWindow类、QWidget类或QDialog类创建的。本例为简化直接使用QLabel类,创建一个标签对象label作为应用的主要形式,并在构造时初始化标签的内容和对齐方式,然后使用QLabel类的setStyleSheet()方法设置标签文本颜色、粗体和字体大小属性的类:-文本内容:“第一个使用PySide6开发的GUI应用程序!”-文字位置:居中(横竖)-文字颜色:蓝色-字体:粗体——字体大小:15像素(4)然后,设置主窗体的标题(即标签)label.setWindowTitle("PySide6示例程序")调用QLabel类的setWindowTitle()方法设置主窗体(即label))title("PySide6SampleProgram")。(5)然后,显示主窗体(即label)label.show()调用QLabel类的show()方法显示主窗体(即label)。(6)最后,运行应用程序app.exec_()执行QApplication类的exec_()方法,这将使QtGUI进入一个主事件循环,直到程序调用exit()、quit()或关闭应用程序的主窗口将结束。注意:主事件循环启动后,会接收用户界面事件和来自其他事件源的事件,分发并处理到相应的窗口。此外,它还完成Qt应用程序的初始化和应用程序运行后的善后工作,并提供会话管理。结束语本系列介绍了如何使用QtforPython在Python中开发GUI应用程序。
