首页 > 编程语言 >Python实现简单的图形化界面 -----Qt GUI

Python实现简单的图形化界面 -----Qt GUI

时间:2024-06-11 11:58:03浏览次数:13  
标签:Qt Form Python self PyQt5 图形化 QtWidgets GUI

一、Qt 简介以及安装
简单介绍Qt 以及响应的环境安装

Qt 简介
Qt是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。支持通用操作系统 Windows、Linux、Unix,智能手机系统 Android、iOS、WinPhone, 嵌入式系统 QNX、VxWorks 等等。
Qt下载与安装
在Python中使用PyQt5编写程序可以直接安装PyQt5,不需要安装Qt的开发环境,但是这样就只能使用纯代码写程序。一直以这种方式写MATLAB的GUI程序的我深感界面调整的繁琐,所以还是选择安装Qt的IDE,即Qt Creator采用可视化设计。

二、PyQt5 安装
在命令行下输入pip3 install PyQt5 安装Python依赖库。
也可以使用清华镜像网站,指令是:

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple PyQt5

三、在PyCharm中直接编写代码创建GUI
代码如下:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

app = QtWidgets.QApplication(sys.argv) # 创建app
widgetHello = QtWidgets.QWidget() # 创建窗体,选择QtWidget类
widgetHello.resize(280, 150) #设置窗体大小
widgetHello.setWindowTitle("Demo") # 设置窗体名称

LabHello = QtWidgets.QLabel(widgetHello) # 创建标签,指定父容器
LabHello.setText('Hello,World') # 设置标签内容
font = QtGui.QFont() # 创建字体font对象
font.setBold(True) # 加粗
font.setPointSize(12) # 字号
LabHello.setFont(font) # 设置标签字体
size = LabHello.sizeHint() # 获取最佳位置
LabHello.setGeometry(70,60,size.width(),size.height()) # 设置标签位置

widgetHello.show() # 显示窗体
sys.exit(app.exec_()) # 点菜单关闭才关闭窗口,否则运行完上述代码直接关闭窗口

运行效果:


四、在Qt中创建py文件
打开安装好的Qt Creator,新建项目会得到一个后缀名为.ui的文件。

拖动模板,移动到创建好的面板中,效果图如下:


保存后,可以得到ui文件,可以用记事本打开,其实就是一个XML文件。

为了得到生成的py文件,新建文本,输入pyuic5 -o HelloForm.py HelloForm.ui,这里.ui文件是源文件,py文件是生成的python文件,保存为.bat批处理文件,双击运行,就会发现生成了python代码:

代码如下(示例):

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

# Form implementation generated from reading ui file 'HelloForm.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets
import sys

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(140, 110, 111, 16))
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(140, 150, 92, 28))
        self.pushButton.setObjectName("pushButton")

        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", "Hello World"))
        self.pushButton.setText(_translate("Form", "Close"))
#########################调用方法###################################
app = QtWidgets.QApplication(sys.argv)
baseW = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(baseW)
baseW.show()
sys.exit(app.exec_())

# 定义了一个类,用于实现创建的GUI 不需要传入任何参数
# setupUi 方法用于GUI的初始化 需要传入QtWight对象,该对象需要
# retranslateUi 方法用于设置GUI所有文字部分,便于多语言的设置
# 使用方法: 创建QApplication对象->创建QWidget对象->创建Ui_Form对象
# ->Ui_Form对象初始化


这里其实是将我们刚刚画好的GUI封装成了一个类,当我们实现这个类的对象时,会生成相应的GUI。

添加上面最后一部分的代码,运行得到:

本次分享到此结束,感谢大家的阅读,觉得有所帮助的朋友点点关注点点赞! 

标签:Qt,Form,Python,self,PyQt5,图形化,QtWidgets,GUI
From: https://blog.csdn.net/xuezhe5212/article/details/139511350

相关文章

  • Python数据分析与机器学习在电子商务推荐系统中的应用
    文章目录......
  • Python中的浅拷贝与深拷贝
    Python中值的拷贝可分为直接赋值,浅拷贝与深拷贝直接赋值:即为对象的引用,赋值前后的对象均指向同一对象浅拷贝:拷贝父对象,拷贝前与拷贝后的对象均为独立的对象,但是他们的子对象都仍然指向同一对象深拷贝:完全拷贝父对象及子对象,拷贝前与拷贝后的对象均独立存在演示代码如下import......
  • Python集成开发环境(IDE)JetBrains pycharm pro 2024 for mac
    JetBrainsPyCharmPro2024确实是一款强大的Python集成开发环境(IDE),为Python开发者提供了许多高级功能和改进,旨在提高开发效率和代码质量。以下是对您提到的PyCharm2024新增功能的详细解释:Python集成开发环境(IDE)软件地址HuggingFace模型和数据集的文档预览PyCharm2024......
  • 流畅的python--第十章 使用一等函数实现设计 模式
    经典的策略模式示例10-1实现Order类,支持插入式折扣策略fromabcimportABC,abstractmethodfromcollections.abcimportSequencefromdecimalimportDecimalfromtypingimportNamedTuple,OptionalclassCustomer(NamedTuple):name:strfidelity:intcl......
  • centOS安装python3
    CentOS7安装Python3在CentOS系统上安装Python3的步骤如下:首先,打开终端。安装必要的构建工具和库:sudoyumgroupinstall-y"DevelopmentTools"sudoyuminstall-yzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm......
  • Python控制语句
    程序设计中的控制语句有3种,即顺序、分支和循环语句。Python程序通过控制语句来管理程序流,完成一定的任务。程序流是由若干个语句组成,语句既可以是一条单一的语句,也可以是复合语句(即语句中嵌套语句),Python中的控制语句如下:分支语句:if循环语句:while和for跳转语句:break、continue......
  • Python数据结构——序列(超详细版)
    在计算机程序中会有很多数据,使用数据结构可以管理这些数据,Python中的数据结构主要有序列、集合和字典。常见的数据结构有:数组(array)、集合(set)、列表(list)、队列(queue)、链表(linkedlist)、树(tree)、堆(heap)、栈(stack)和字典(dictionary)。注意:Python中并没有数组结构,因为数组要求元素类......
  • “深度学习之巅:在 CentOS 7 上打造完美Python 3.10 与 PyTorch 2.3.0 环境”学习
    在CentOS7上安装Python3.10和PyTorch2.3.0时,为什么要首先升级OpenSSL?在CentOS7上,默认安装的OpenSSL版本可能不支持Python3.10所需的最新加密标准。因此,为了确保Python3.10能够正常工作,需要先升级OpenSSL到支持这些标准的版本。升级OpenSSL的具体步骤是什么?升级Ope......
  • Python 变量
    Python变量变量的定义变量是编程中不可或缺的一部分,特别是在Python中,它们扮演着存储和引用数据的重要角色。变量可以被视为命名容器,用于存储不同类型的数据,如字符串、数字、列表等。这些变量允许我们通过其独特的名字在程序中轻松访问和修改数据。在Python中,变量的创建实际上......
  • 【Qt 快速入门(三)】- Qt信号和槽
    目录Qt快速入门(三)-Qt信号和槽Qt信号和槽详解信号和槽的基本概念信号槽连接信号和槽的声明与定义连接信号和槽信号和槽的高级特性自动参数匹配信号与信号连接lambda表达式作为槽自定义信号和槽信号和槽的线程支持跨线程连接信号和槽的生命周期管理自动断开连接总结......