• 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:pydeploy文件夹下

    生成python代码

    使用cmd将目录切到D:pydeploy目录并执行命令: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
  • 相关阅读:
    NoHttp封装--03 cookie
    NoHttp封装--02 自定义请求
    NoHttp封装--01
    Cookie管理 WebView同步
    Java注解处理器--编译时处理的注解
    Android联网更新应用
    shell编程下 特殊变量、test / [ ]判断、循环、脚本排错
    磁盘管理 之 parted命令添加swap,文件系统
    磁盘管理之 raid 文件系统 分区
    用户管理上
  • 原文地址:https://www.cnblogs.com/like1824/p/13073552.html
Copyright © 2020-2023  润新知