pyQt5简单使用

摘要:
通常,选择“主窗口”并单击“创建”进行创建。因此,我们在同一目录中创建另一个名为“main.py”的程序,并输入以下内容。

安装

pip install PyQt5
pip3.5 install pyqt5-tools 

界面化操作

1.在win+R中输入designer并敲回车,即可启动Designer。一般选择“Main Window”点击“Create”即可创建。

若在win+R中输入designer并敲回车后无反应,可以直接搜designer.exe直接启动

pyQt5简单使用第1张 

 2.创建后,可以方便快捷的用Qt Designer画出对应框体,如通过Combo Box添加下拉选择的控件;通过Push Button添加按钮;通过List Widget添加列表框;通过Table Widget添加数据表格框,table中设置列数(右键-Edit Items-Colums),调整框体位置和文字大小,背景颜色以及windowTitle来优化界面显示,使用快捷键Ctrl+R预览当前编写的GUI显示如下:

pyQt5简单使用第2张 

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,请自行替换

pyQt5简单使用第3张

 运行main.py即可显示GUI界面

修改生成的代码再次优化界面显示

1.删除菜单栏和工具栏代码

 pyQt5简单使用第4张

2.调整文字大小

pyQt5简单使用第5张 

3.添加背景色

 pyQt5简单使用第6张

4.修改框体大小和位置

pyQt5简单使用第7张

 pyQt5简单使用第8张

5.设置tableWight行数和列数

 pyQt5简单使用第9张

6.设计label字体颜色

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

7.优化后显示如下

 pyQt5简单使用第10张

重点难点:初始化 + 信号和槽

1.combo Box初始化

两种方式,一种是一个一个的添加,一种是以列表形式一次添加

 pyQt5简单使用第11张

#补充:获取combo Box当前值

pyQt5简单使用第12张

 2.listWidget初始化

类似comboBox,具体如下:

 pyQt5简单使用第13张

#补充1:listWidget内容清空

 pyQt5简单使用第14张

#补充2:获取行数

self.listWidget.count()

 补充3:获取第i行的数据

 pyQt5简单使用第15张

 3. tableWidget初始化

pyQt5简单使用第16张

4. combox关联

 pyQt5简单使用第17张

 5. listWidget关联

 pyQt5简单使用第18张 

6. tableWidget新增行

 pyQt5简单使用第19张

7. tableWidget删除行

pyQt5简单使用第20张

 示例代码:

pyQt5简单使用第21张pyQt5简单使用第22张
# -*- 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

免责声明:文章转载自《pyQt5简单使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇服务器虚拟化技术简介Android合并文件的三种方式代码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

第15.34节 PyQt(Python+Qt)入门学习:containers容器类部件QStackedWidget堆叠窗口部件详解

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一、概述 StackedWidget堆叠窗口部件为一系列窗口部件的堆叠,对应类为QStackedWidget。QStackedWidget类对应部件为放在堆栈中的多个窗口部件,这些放在堆栈中的窗口部件在界面上只能看到一个窗口。 二、属性 2.1、概...

自定义实现 PyQt5 下拉复选框 ComboCheckBox

一、前言 由于最近的项目需要具有复选功能,但过多的复选框会影响界面布局和美观,因而想到把 PyQt5 的下拉列表和复选框结合起来,但在 PyQt5 中并没有这样的组件供我们使用,所以想要自己实现一个下拉复选框,主要就是继承 QComboBox 类,然后将复选框 QCheckBox 加入其中,并实现相应的功能。 最终实现的下拉复选框效果如下: 二、代码实现...

在PyQt中构建 Python 菜单栏、菜单和工具栏

摘要:菜单、工具栏和状态栏是大多数GUI 应用程序的常见且重要的图形组件。您可以使用它们为您的用户提供一种快速访问应用程序选项和功能的方法。 本文分享自华为云社区《Python 和 PyQt:创建菜单、工具栏和状态栏》,作者:Yuchuan。 在使用 Python 和PyQt开发图形用户界面 (GUI)应用程序时,您将使用的一些最有用和最通用的图形元素是...

PyQt5四大布局方式

1、绝对布局方式'''绝对布局方式,通过move的XY坐标方式来控制控件的位置'''from PyQt5.QtWidgets import *import sys,mathclass absolutelayout(QWidget): def __init__(self): super(absolutelayout,self).__ini...

【第九节】PyQt 拖拽

在这部分PyQt5教程中,我们将讨论拖拽相关操作。 在计算机图形用户界面中,拖放的操作(或支持的作用)点击虚拟对象和拖动到另一个位置或到另一个虚拟对象。一般来说,它可以用于调用多种行动,或创建各种类型的两个抽象对象之间的关联。拖放是图形用户界面的一部分。拖拽操作让用户直观地做复杂的事情。通常,我们可以拖放两件事:数据或一些图形对象。如果我们把一个图像从一个...

[ PyQt入门教程 ] PyQt5基本控件使用:单选按钮、复选框、下拉框、文本框

本文主要介绍PyQt5界面最基本使用的单选按钮、复选框、下拉框三种控件的使用方法进行介绍。 1、RadioButton单选按钮/CheckBox复选框。需要知道如何判断单选按钮是否被选中。 2、ComboBox下拉框。需要知道如何对下拉框中的取值进行设置以及代码实现中如何获取用户选中的值。 带着这些问题下面开始介绍这RadioButton单选按钮、Chec...