pyQt5簡單使用


安裝

pip install PyQt5
pip3.5 install pyqt5-tools 

界面化操作

1.在win+R中輸入designer並敲回車,即可啟動Designer。一般選擇“Main Window”點擊“Create”即可創建。

若在win+R中輸入designer並敲回車后無反應,可以直接搜designer.exe直接啟動

 

 2.創建后,可以方便快捷的用Qt Designer畫出對應框體,如通過Combo Box添加下拉選擇的控件;通過Push Button添加按鈕;通過List Widget添加列表框;通過Table Widget添加數據表格框,table中設置列數(右鍵-Edit Items-Colums),調整框體位置和文字大小,背景顏色以及windowTitle來優化界面顯示,使用快捷鍵Ctrl+R預覽當前編寫的GUI顯示如下:

 

3.點擊保存,生成*.ui的文件,本例中為test.ui,保存在D:\py\deploy文件夾下

生成python代碼

使用cmd將目錄切到D:\py\deploy目錄並執行命令:pyuic5 -o test1.py test.ui,即可在該目錄下生成test.py的文件

生成的test.py並沒有程序入口。因此我們在同一個目錄下另外創建一個程序叫做“main.py”,並輸入如下內容。在本例中,gui_file_name就是test,請自行替換

 運行main.py即可顯示GUI界面

修改生成的代碼再次優化界面顯示

1.刪除菜單欄和工具欄代碼

 

2.調整文字大小

 

3.添加背景色

 

4.修改框體大小和位置

 

5.設置tableWight行數和列數

 

6.設計label字體顏色

self.label.setGeometry(QtCore.QRect(130, 50, 81, 21))
self.label.setObjectName("label")
self.label.setStyleSheet("color:white") #文本框中字體顯示白色

7.優化后顯示如下

 

重點難點:初始化 + 信號和槽

1.combo Box初始化

兩種方式,一種是一個一個的添加,一種是以列表形式一次添加

 

#補充:獲取combo Box當前值

 2.listWidget初始化

類似comboBox,具體如下:

 

#補充1:listWidget內容清空

 

#補充2:獲取行數

self.listWidget.count()

 補充3:獲取第i行的數據

 

 3. tableWidget初始化

4. combox關聯

 

 5. listWidget關聯

  

6. tableWidget新增行

 

7. tableWidget刪除行

 

 示例代碼:

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

# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt5 UI code generator 5.13.2
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidgetItem

dict = {'Apple':['iphone7','iphone8','iphone9','iphone10','iphone11'],'HuaWei':['nova 7 Pro','P40Pro','Mate30 Pro','','P30Pro'],
        '小米':['小米10','小米10 Pro','小米8','小米9 SE','小米10 青春版','小米9 Pro'],'vivo':['vivo X50 Pro','vivo X50','vivo S6','vivo Z6']}

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        #MainWindow框體大小
        MainWindow.resize(1100, 850)
        #修改主題的顏色
        palette1 = QtGui.QPalette()
        palette1.setColor(palette1.Window, QtGui.QColor(47, 57, 76))
        MainWindow.setPalette(palette1)

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        #comboBox 框體位置和大小
        self.comboBox.setGeometry(QtCore.QRect(310, 20, 91, 31))
        self.comboBox.setObjectName("comboBox")
        # self.comboBox.addItem('Apple')  #添加一個項目
        # self.comboBox.addItem('HuaWei')
        # self.comboBox.addItem('小米')
        # self.comboBox.addItem('vivo')
        self.comboBox.addItems(['Apple', 'HuaWei', '小米', 'vivo'])  # 添加多個項目

        #comboBox關聯
        self.comboBox.currentIndexChanged.connect(self.selectionchange)

        self.listWidget = QtWidgets.QListWidget(self.centralwidget)
        self.listWidget.setGeometry(QtCore.QRect(160, 70, 421, 681))
        self.listWidget.setObjectName("listWidget")

        #listWidget雙擊關聯
        self.listWidget.doubleClicked.connect(self.deleteList)

        #獲取當前comboBox的text值
        value = self.comboBox.currentText()
        self.listWidget.addItems(dict[value])

        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(320, 770, 71, 31))
        #修改button字體大小
        font = QtGui.QFont()
        font.setPointSize(12)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")

        # 清空
        self.pushButton.clicked.connect(self.empty)

        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(810, 440, 71, 31))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setObjectName("pushButton_2")

        #新增一行
        self.pushButton_2.clicked.connect(self.addline)

        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(680, 150, 311, 271))
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(2)
        #設置table行數
        self.tableWidget.setRowCount(10)
        self.tableWidget.setColumnWidth(0, 100)  # 設置1列的寬度
        self.tableWidget.setColumnWidth(1, 200)  # 設置2列的寬度

        self.tableWidget.setItem(0, 0, QTableWidgetItem("test"))  # 設置0行0列的內容為test

        #后面命名用的列
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)

        MainWindow.setCentralWidget(self.centralwidget)

        #菜單欄和工具欄代碼,不需要刪除
        # self.menubar = QtWidgets.QMenuBar(MainWindow)
        # self.menubar.setGeometry(QtCore.QRect(0, 0, 1221, 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", "測試"))
        self.pushButton.setText(_translate("MainWindow", "清空"))
        self.pushButton_2.setText(_translate("MainWindow", "新增"))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "列一"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "列二"))


    def deleteList(self):
        item = self.listWidget.currentItem()  #獲取當前選中對象
        print(item.text())
        self.listWidget.takeItem(self.listWidget.currentRow())  # 刪除指定索引號的項目


    def selectionchange(self):
        value = self.comboBox.currentText()
        print("Combo Box顯示內容變化,目前顯示為{}".format(value))
        self.listWidget.clear()
        list = dict[value]
        self.listWidget.addItems(list)


    def empty(self):
        #listWidget內容清空
        self.listWidget.clear()

    def addline(self):
        row = self.tableWidget.rowCount()
        self.tableWidget.setRowCount(row + 1)
        #滾動條移到最后面
        self.tableWidget.verticalScrollBar().setSliderPosition(row)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM