在这篇文章中,我们将学习如何使用PyQt5库创建一个简单的图形用户界面(GUI)应用程序。我们将通过以下步骤来实现这个目标:
- 导入所需的库和模块
- 创建一个主窗口类,继承自QMainWindow和Ui_MainWindow
- 初始化主窗口类,设置UI并连接信号和槽
- 实现功能函数
- 编写程序入口,创建应用程序实例并显示主窗口
首先,我们需要导入所需的库和模块。在这个例子中,我们需要导入sys库、QMainWindow、QApplication、QVBoxLayout以及我们自定义的Ui_MainWindow类。
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QVBoxLayout
from MainUI import Ui_MainWindow
接下来,我们创建一个名为MainWindow的主窗口类,它继承自QMainWindow和Ui_MainWindow。在这个类的构造函数中,我们调用父类的构造函数,并创建一个Ui_MainWindow实例,然后使用setupUi方法设置UI。
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
现在,我们需要实现一个功能函数。在这个例子中,我们将实现一个简单的start函数,当用户点击按钮时,它会打印一条消息。为了实现这个功能,我们需要将按钮的clicked信号连接到start函数。
def start(self):
print("你点击了开始按钮")
最后,我们需要编写程序入口。在这里,我们创建一个QApplication实例,然后创建一个MainWindow实例,并调用show方法显示主窗口。最后,我们调用app.exec_()方法进入事件循环。
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())
完整代码及注释
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QVBoxLayout
#上面两个是正常的调用所需要的东西,要啥调用啥就行
#下面这个是从你的UI转过来的代码里面调用的类,from后面跟大文件名.小文件名(同一文件夹下直接写你的UI文件名就行).你的UI.py import 这个是你UI.py文件里面的那个类
from MainUI import Ui_MainWindow
class MainWindow(QMainWindow,Ui_MainWindow): #这个就是你创建的类
def __init__(self,parent=None): #正常的初始化函数,具体是啥不用懂,或者去学Python语法,将类的那一节会讲
super().__init__(parent) #类的继承
self.ui = Ui_MainWindow() #这个就是你的界面的名字,Ui_MainWindow是你调用的模块里面的类
self.ui.setupUi(self) #setupUi 可能是启动界面的意思
#这中间就是你实现功能的地方,最重要的就是函数和信号和槽
#当你点击了你的按键之后,你的代码就会执行括号里面的函数
self.ui.btn_pictor(这东西就是你的按键名字,你在ui里面的名字).clicked.connect(self.start) #这就是一个信号和槽的构造,里面括号的中文删掉,给你理解用的
#这个就是函数
def start(self):
print("你点击了开始按钮")
#下面这一段几乎是固定代码,主要左右就是程序的入口,对界面进行刷新
if __name__ == '__main__':
app = QApplication(sys.argv) #创建一个什么东西,和最后一段是固定用法,主要作用是创建一个进程对界面进行实时刷新
win = MainWindow() #这个就是你前面创建的类的名字(class)给他放到win(这个名字是自己随便写的)里面
win.show() #这个就是将上一个东西展示出来,就是展示界面,你类里面的所有东西。win和上一个自定义名字相同。show是展示的意思
sys.exit(app.exec_())
至此,我们已经完成了一个简单的PyQt5 GUI应用程序。你可以根据需要添加更多的功能和控件,以满足你的需求。希望这篇文章能帮助你入门PyQt5编程。