1. 程式人生 > >使用 Qt Designer建立前端介面,通過VS Code將Qt Designer建立好的.ui轉換為.py,最後使用PyQt5實現點選按鈕介面發生跳轉

使用 Qt Designer建立前端介面,通過VS Code將Qt Designer建立好的.ui轉換為.py,最後使用PyQt5實現點選按鈕介面發生跳轉

簡單的提一下PyQt5,Qt Designer的安裝

python 版本:3.6.2
使用pip安裝:

pip3 install PyQt5

之後通過安裝PyQt5-tools,會自動安裝Qt Designer

pip install PyQt5-tools

想實現的功能:點選第一張圖片中的“進入系統”,自動跳轉到第二張圖片。

就這麼一個簡單的內容,我幾乎看遍了所有的部落格,所有的教程,還是解決不了。
一氣之下,自己又開始閉門造車了!
4
4

主要的步驟詳解

  • 1. 使用 Qt Designer 畫出我們需要的介面
    • a) 開啟Qt Designer
      • 預設Qt Designer的位置在:安裝Python目錄->Lib->site-packages->pyqt5-tools
        • 關於python安裝目錄,請參見上一篇部落格
    • b) 直接點選“Create”,如下圖
    • 這裡寫圖片描述
    • c) 拖入一個“TextLabel”框和兩個“PushButton”按鈕,並在右側屬性中找到“QAbstractButton->text”,將三者的值一次改為“不知名系統”,“進入系統”,“退出系統”。 接下來我們隨便儲存一個位置[我儲存在了桌面上],可以看到檔案字尾為.ui,正常的方法打不開。
    • d) 同理,第二個UI請自己製作。
    • e) 這裡,預設,你已經制作好了兩個.ui檔案,我製作的名字為:welcom.uiwelcom2.ui
  • 2. 使用 Vs Code 將.ui轉化為.py
    • 1> 預設你已經裝好了VS code,Py Charm 也行,就是方式可能不一樣。
    • 2> 預設已經在VS Code的應用商店下載安裝好了pyqt的擴充套件包
    • 3> 在工作區中開啟桌面,如圖
    • 3
    • 4> 找到剛剛建立的那兩個.ui檔案
    • 5> 點選->擊右鍵->PyQT:Complite Form
    • 6> 在桌面上已經生成的對應的.py檔案,他們的名字後面會用到
    • 4
  • 3. 使用PyQt5實現點選按鈕介面跳轉
    • 1> 在桌面上新建一個名為Jump.py檔案。
    • 2> 為了進行區別,我們把第二個.py檔案,也就是Ui_welcom2.py中類的名字改成 Ui_Main2,Ui_welcom.py中類的名字改為Ui_Main
    • 原始檔內容如下

Jump.py中的內容

# Jump.py
from PyQt5 import QtCore, QtGui, QtWidgets
from Ui_welcom import Ui_Main
from Ui_welcom2 import Ui_Main2

class Ui_Dialog(QtWidgets.QWidget,Ui_Main2):
    def __init__(self):
        super(Ui_Dialog,self).__init__()
        self.setupUi(self)

#主介面
class login(QtWidgets.QMainWindow,Ui_Main):
    def __init__(self):
        super(login,self).__init__()
        self.setupUi(self)
    #定義登入按鈕的功能
    def loginEvent(self):
        self.hide()
        self.dia = Ui_Dialog()
        self.dia.show()

#執行視窗Login
if __name__=="__main__":
    import sys
    app=QtWidgets.QApplication(sys.argv)
    first=login()
    first.show()
    first.pushButton.clicked.connect(first.loginEvent)
    sys.exit(app.exec_())

Ui_welcom.py 中的內容

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'c:\Users\HP\Desktop\welcom.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Main(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(130, 80, 72, 20))
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(120, 160, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(Form)
        self.pushButton_2.setGeometry(QtCore.QRect(120, 230, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")

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

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "不知名系統"))
        self.pushButton.setText(_translate("Form", "進入系統"))
        self.pushButton_2.setText(_translate("Form", "退出系統"))

Ui_welcom2.py 內容

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'c:\Users\HP\Desktop\welcom2.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Main2(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(150, 50, 91, 16))
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(150, 160, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(Form)
        self.pushButton_2.setGeometry(QtCore.QRect(150, 220, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")

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

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "不知名步驟"))
        self.pushButton.setText(_translate("Form", "第一關"))
        self.pushButton_2.setText(_translate("Form", "第二關"))

希望對您有所幫助。累死直接。