pyqt5

作者: c之气三段 | 来源:发表于2023-08-17 10:36 被阅读0次

conda activate N:\PyPro\ProjectPyQt5\envs
pip install pyqt5 -i https://pypi.mirrors.ustc.edu.cn/simple/

image.png
pip install PyQt5-tools -i https://pypi.mirrors.ustc.edu.cn/simple/
image.png
设置qt工具
image.png
#设计师
Name:QtDesigner
Group:External Tools
Program:D:\Program Files\Python39\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
Arguments:$FileDir$\$FileName$ 
Working directory:$FileDir$
image.png
#ui转py
Name:pyuic5
Group:External Tools
Program:D:\Program Files\Python39\Scripts\pyuic5.exe
Arguments:$FileName$ -o $FileDir$\..\py\$FileNameWithoutExtension$.py
Working directory:$FileDir$
image.png
#资源
Name:pyrcc5
Group:External Tools
Program:D:\Program Files\Python39\Scripts\pyrcc5.exe
Arguments:$FileName$ -o $FileDir$\..\py\$FileNameWithoutExtension$.py
Working directory:$FileDir$
image.png
image.png

先用Designer设置界面保存到指定文件夹,再用pyuic5转为py类,写一个py继承改类
如:
转换后的py为
目录结构:


image.png
rom PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setObjectName("verticalLayout")
        self.pushButton_out = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_out.setObjectName("pushButton_out")
        self.verticalLayout.addWidget(self.pushButton_out)
        self.pushButton_print = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_print.setObjectName("pushButton_print")
        self.verticalLayout.addWidget(self.pushButton_print)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton_out.setText(_translate("MainWindow", "PushButton"))

继承改py类

import sys

from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QMainWindow

from .Ui_MainWindow import Ui_MainWindow


class MainWindow(QMainWindow, Ui_MainWindow):
    write1 = pyqtSignal(str)#定义信号有参数必须指定类型

    def __init__(self):
        super(QMainWindow, self).__init__()
        self.setupUi(self)  # 渲染页面控件
        self.connect_signals()  # 设置信号槽

    def connect_signals(self):
        self.pushButton_out1.clicked.connect(self.printStr)
        self.write1.connect(self.printA)#槽函数不写参数列表

    def printStr(self, checked):
        print("print" + str(checked))
        self.write1.emit("fghfhg")#触发信号

    def printA(self,data):
        print("print"+data)

初始化mainwindow


import sys
from PyQt5.QtWidgets import QApplication
from MainUi.py.MainWindow import MainWindow

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    app.exec_()

相关文章

网友评论

      本文标题:pyqt5

      本文链接:https://www.haomeiwen.com/subject/xgvkmdtx.html