PyQt简单做一个GUI
创建虚拟环境
conda create --name PyQt python=3.10.0
进入虚拟环境
下载PyQt
pip install pyqt5 pyqt5-tools
打开Qt中的designer.exe,编写一个简单的界面
保存为*.ui文件,打开终端,利用下面的命令将ui文件转换为python文件
pyuic5 -o main_window.py untitled.ui
编写主程序
新建一个*.py文件,与之前ui转换的py文件放在同一目录下,编写代码:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from main_window import Ui_MainWindow # pyuic5 生成文件的名称 (名称 import class名称)class MyMainWindow(QMainWindow, Ui_MainWindow):#窗口类 继承 Ui_MainWindowdef __init__(self):super().__init__()self.setupUi(self) # 加载 UIself.pushButton.clicked.connect(self.hahh) #按钮点击事件,与ui中的按钮名称一致 pushButtondef hahh(self):#按钮点击事件,定义一个函数,下面用来写功能print("Button clicked!") if __name__ == "__main__":app = QApplication(sys.argv)window = MyMainWindow()window.show()sys.exit(app.exec_())
运行成功
这里写一个将终端结果输出在界面上的框架,以供日后使用
新建一个空间
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from main_window import Ui_MainWindowclass EmittingStream:def __init__(self, text_widget):self.text_widget = text_widgetdef write(self, text):self.text_widget.appendPlainText(text)def flush(self):passclass MyMainWindow(QMainWindow, Ui_MainWindow):def __init__(self):super().__init__()self.setupUi(self)# 重定向 stdout/stderr 到 UI 里的 QPlainTextEditsys.stdout = EmittingStream(self.plainTextEdit)sys.stderr = EmittingStream(self.plainTextEdit)self.pushButton.clicked.connect(self.clickbutton1)def clickbutton1(self):print("Button clicked!") # 输出会显示在 plainTextEdit# TODO: 如果运行 exe,要用线程或 QProcessif __name__ == "__main__":app = QApplication(sys.argv)window = MyMainWindow()window.show()sys.exit(app.exec_())