使用Qt Designer為您的Qt for Python項(xiàng)目創(chuàng)建基于Qt Widgets的圖形界面的兩種方法
本頁介紹如何使用Qt Designer為您的Qt for Python項(xiàng)目創(chuàng)建基于Qt Widgets的圖形界面。Qt Designer是一個圖形UI設(shè)計(jì)工具,可以作為獨(dú)立的二進(jìn)制文件(pyside6-designer)提供,也可以嵌入到Qt Creator IDE中。它在Qt Creator中的使用在Using Qt Designer中描述。
設(shè)計(jì)存儲在.ui文件中,這是一種基于XML的格式。它將轉(zhuǎn)換為 Python 或C++代碼,在項(xiàng)目構(gòu)建時通過 pyside6-uic 工具填充小部件實(shí)例。
要在Qt Creator中創(chuàng)建新的Qt設(shè)計(jì)表單,請選擇文件/新建文件或項(xiàng)目和“主窗口”作為模板。將其另存為主窗口.ui。將 QPushButton 添加到中央小部件的中心。
您的文件應(yīng)如下所示:mainwindow.ui
方法一
mainwindow.ui
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'mainwindowxJfmkA.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(653, 476)
self.centralWidget = QWidget(MainWindow)
self.centralWidget.setObjectName(u"centralWidget")
self.pushButton = QPushButton(self.centralWidget)
self.pushButton.setObjectName(u"pushButton")
self.pushButton.setGeometry(QRect(100, 260, 111, 51))
font = QFont()
font.setPointSize(12)
self.pushButton.setFont(font)
self.pushButton.setStyleSheet(u"border-radius:15px;\n"
"background:red;\n"
"color:black;\n"
"")
self.label = QLabel(self.centralWidget)
self.label.setObjectName(u"label")
self.label.setGeometry(QRect(30, 20, 251, 71))
font1 = QFont()
font1.setPointSize(20)
font1.setBold(True)
font1.setWeight(75)
self.label.setFont(font1)
self.label.setStyleSheet(u"color: red;\n"
"border-bottom: 6px solid red;\n"
"background-color: lightgrey;\n"
"\n"
"")
self.label_3 = QLabel(self.centralWidget)
self.label_3.setObjectName(u"label_3")
self.label_3.setGeometry(QRect(60, 120, 181, 81))
font2 = QFont()
font2.setPointSize(25)
font2.setBold(True)
font2.setWeight(75)
self.label_3.setFont(font2)
self.label_3.setToolTipDuration(-1)
self.label_3.setStyleSheet(u"border: 2px solid red;\n"
"border-radius: 30px;\n"
"border-right-style:dotted;\n"
"border-right-width:5px;\n"
"border-left-style:dotted;\n"
"border-left-width:5px;\n"
"border-top-width:10px;\n"
"border-bottom-width:10px;")
self.label_4 = QLabel(self.centralWidget)
self.label_4.setObjectName(u"label_4")
self.label_4.setGeometry(QRect(420, 130, 61, 61))
font3 = QFont()
font3.setPointSize(15)
font3.setBold(True)
font3.setWeight(75)
self.label_4.setFont(font3)
self.label_4.setToolTipDuration(-1)
self.label_4.setStyleSheet(u"border: 2px solid rgba(0,250,0,255);\n"
"border-radius: 30px;\n"
"border-right-width:5px;\n"
"border-left-width:5px;\n"
"border-top-width:10px;\n"
"border-bottom-width:10px;")
self.label_2 = QLabel(self.centralWidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setGeometry(QRect(330, 20, 251, 71))
self.label_2.setFont(font1)
self.label_2.setStyleSheet(u"color: rgba(0,250,0,255);/*rgba \u7ea2\u8272\u53f7,\u7eff\u8272\u53f7\uff0c\u84dd\u8272\u53f7\uff0c \u900f\u660e\u5ea6*/\n"
"/*text-shadow: -1px 0 rgba(0,250,0,255), 0 1px rgba(0,250,0,255), 1px 0 rgba(0,250,0,255), 0 -1px rgba(0,250,0,255);*/\n"
"border-bottom: 6px solid rgba(0,250,0,255);\n"
"background-color: lightgrey;\n"
"\n"
"")
self.pushButton_2 = QPushButton(self.centralWidget)
self.pushButton_2.setObjectName(u"pushButton_2")
self.pushButton_2.setGeometry(QRect(400, 260, 111, 51))
self.pushButton_2.setFont(font)
self.pushButton_2.setStyleSheet(u"border-radius:25px;\n"
"background:rgba(0,255,0,255);\n"
"color:rgba(0,0,0,255);")
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QMenuBar(MainWindow)
self.menuBar.setObjectName(u"menuBar")
self.menuBar.setGeometry(QRect(0, 0, 653, 23))
MainWindow.setMenuBar(self.menuBar)
self.mainToolBar = QToolBar(MainWindow)
self.mainToolBar.setObjectName(u"mainToolBar")
MainWindow.addToolBar(Qt.TopToolBarArea, self.mainToolBar)
self.statusBar = QStatusBar(MainWindow)
self.statusBar.setObjectName(u"statusBar")
MainWindow.setStatusBar(self.statusBar)
self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
self.pushButton.setText(QCoreApplication.translate("MainWindow", u"PushButton", None))
self.label.setText(QCoreApplication.translate("MainWindow", u"\u8fd9\u662f\u7528\u5355\u8bcd\u8868\u8ff0\u989c\u8272", None))
self.label_3.setText(QCoreApplication.translate("MainWindow", u" \u6807\u7b7e", None))
self.label_4.setText(QCoreApplication.translate("MainWindow", u"\u6807\u7b7e", None))
self.label_2.setText(QCoreApplication.translate("MainWindow", u"\u8fd9\u662f\u7528\u8272\u503c\u8868\u8ff0\u989c\u8272", None))
self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"PushButton", None))
# retranslateUi
使用mainwindow.ui方法
1、新建一個txt文件
2、將mainwindow.ui代碼復(fù)制粘貼進(jìn)txt文件中。
3、將文件保存后,更改文件名后綴為.ui。
4、進(jìn)入IDE中,新建一個Python文件。然后將上面新建的mainwindow.ui文件放在和新建的Python文件同一個路徑下。
5、復(fù)制下面這段代碼到新建的Python文件中。
import sys
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QApplication
from PySide6.QtCore import QFile, QIODevice
from PySide6 import QtWidgets
if __name__ == "__main__":
app = QApplication(sys.argv)
# app.setStyle(QtWidgets.QStyleFactory.create("Fusion")) # 切換風(fēng)格
ui_file = QFile("mainwindow.ui")
loader = QUiLoader()
window = loader.load(ui_file)
ui_file.close()
window.show()
sys.exit(app.exec())
使用app.setStyle(QtWidgets.QStyleFactory.create(“Fusion”))切換風(fēng)格
方法二
1、將設(shè)計(jì)完成的ui文件另存為mainwindow.ui。存儲路徑需要和當(dāng)前IDE中打開項(xiàng)目的路徑保持一致。
2、在IDE中使用PyUIC功能進(jìn)行轉(zhuǎn)換成Python文件點(diǎn)擊查看Pyuic方法
3、生成的mianwindow.py文件查看
4、新建一個在mianwindow_call.py文件并在新建的mianwindow_call文件中調(diào)用mianwindow.py文件。文章來源:http://www.zghlxwxcb.cn/news/detail-470407.html
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow # 這里使用Pyside6.QtWidgets不行要用PyQt5.QtWidgets。
from mainwindow import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
效果文章來源地址http://www.zghlxwxcb.cn/news/detail-470407.html
到了這里,關(guān)于使用Qt Designer為您的Qt for Python項(xiàng)目創(chuàng)建基于Qt Widgets的圖形界面的兩種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!