PyQt5开发环境搭建 1.2 简单的例子

news2024/11/18 9:46:04

目录

基本开发步骤

创建Eric6工程目录

使用Qt Creator创建Qt项目

创建项目

Kit Selection

打开编辑窗口

打开form

放一个Label

拖动Label

放一个Button

拖动Push Button

保存UI文件

编译ui文件

当前项目下文件列表

将ui文件编译成py文件

将ui文件和py文件拷贝到Eric6目录中

使用Eric6创建项目

打开Eric6

编译ui文件

选择form

编译ui文件

写代码

进入代码页

点开Ui_FormHello.py文件

运行

关闭窗口

为按钮添加代码

进入Qt Creator,打开编辑框

复制函数名

点击底部的信号与槽

直接转到Eric6

插入代码

找帮助

PyQt5 Tutorial

Qt Creator上找(最好用)


基本开发步骤

(1)使用Eric6创建工程目录

(2)在Eric6工程目录下新建目录,如QtApp

(3)使用Qt Creator,在QtApp目录下新建项目,设计窗体UI文件

(4)编译窗体UI文件和资源文件

(5)将编译后的窗体和资源py文件拷贝到Eric6工程目录下

(6)在Qt Creator中使用Go to Slot对话框为组件的信号生成槽函数框架,复制函数名到Eirc6中定义槽函数并编写实现代码

(7)如果要修改窗体UI文件,需要回到Qt Creator进行修改

(8)将修改后的窗体UI文件拷贝回Eric6目录

(9)在Eric6下对窗体进行编译(只是编译UI窗体的话,用Eric6命令就可以实现)

(10)在Eric6里调试和运行程序

创建Eric6工程目录

创建Qt工程目录

使用Qt Creator创建Qt项目

创建项目

选择项目类型

文件->新建文件或项目->项目->选择Application(Qt)->选择Qt Widgets Application 

选择名称和路径 

选择qmake 

设置窗口名称 

Translation File 

Kit Selection

选择MinGW

确定信息

完成后界面

打开编辑窗口

打开form

 

弹出编辑器

输入窗口标题

放一个Label

拖动Label

点中Label,按住鼠标左键不动,拖到窗口中合适位置,释放鼠标左键

 修改text属性

修改字体大小和颜色

把这个拉宽,让它全部显示(鼠标放到框框右下角,鼠标会变成箭头,按住鼠标左键拉动即可) 

选中Label,把它拖到窗口的合适位置

放一个Button

拖动Push Button

修改按钮上的字 

改字体

改大小和位置

保存UI文件

文件->保存

编译ui文件

当前项目下文件列表

ui文件编译成py文件

使用pyuic5命令,注意新的py文件名是在原来ui文件名前面加上“Ui_”

 

将ui文件和py文件拷贝到Eric6目录中

拷贝前 

 拷贝后

  

使用Eric6创建项目

打开Eric6

双击eric6图标

新建project

 

当前项目目录内容 

编译ui文件

选择form

 

选择ui文件 

编译ui文件

可以看到这个有一个compile form命令。如果编辑过程中只是修改了ui文件,没有修改资源文件,那么就不必用pyuic5命令来编译ui文件,直接把ui文件拷贝到Eric6项目目录,在eric6中用compile form命令编译ui文件就可以。

如果修改了资源文件,那么还是要在qt目录下编译。因为资源文件编译的时候需要找qt目录下的相关文件进行编译(如图标等),移动到Eric6项目目录后再编译会出现找不到图标文件等现象。

 

看看编译的时间

点击compile form进行编译

看看编译后的时间

写代码

进入代码页

点开Ui_FormHello.py文件

可以看到文件的代码

文件的代码

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_FormHello(object):
    def setupUi(self, FormHello):
        FormHello.setObjectName("FormHello")
        FormHello.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(FormHello)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(100, 220, 531, 51))
        font = QtGui.QFont()
        font.setFamily("隶书")
        font.setPointSize(24)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(200, 330, 291, 91))
        font = QtGui.QFont()
        font.setFamily("黑体")
        font.setPointSize(36)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        FormHello.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(FormHello)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
        self.menubar.setObjectName("menubar")
        FormHello.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(FormHello)
        self.statusbar.setObjectName("statusbar")
        FormHello.setStatusBar(self.statusbar)

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

    def retranslateUi(self, FormHello):
        _translate = QtCore.QCoreApplication.translate
        FormHello.setWindowTitle(_translate("FormHello", "bkj1-3"))
        self.label.setText(_translate("FormHello", "让我看看这个窗口的输出效果"))
        self.pushButton.setText(_translate("FormHello", "按我试试"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    FormHello = QtWidgets.QMainWindow()
    ui = Ui_FormHello()
    ui.setupUi(FormHello)
    FormHello.show()
    sys.exit(app.exec_())

运行

点ok

 产生运行窗口

这个时候点按钮是没反应的,因为还没放代码上去

关闭窗口

 

为按钮添加代码

进入Qt Creator,打开编辑框

左键选中按钮,点击右键,选择转到槽

选择click()

复制函数名

会弹出来FormHello.cpp窗口,文件最后会有一个空的函数。这个函数不用编辑,不用填代码进去,只需要记住函数名。函数名需要复制到Eric6的py文件中。

 

双击ui文件,回到编辑框

点击底部的信号与槽

注意左侧的工具栏的内容变了

选择项目 

直接转到Eric6

无需在Qt Creator下写任何代码

Qt Creator只是用来生成ui文件

插入代码

运行

按动按钮后,发现了变化 

找帮助

不会写组件的代码怎么办?找帮助。比如不会写这个代码

PyQt5官网

PyQt5 Reference Guide — PyQt Documentation v5.15.4

PyQt5 Tutorial

PyQt5 tutorial - learn GUI programming with Python and PyQt5

 

Qt Creator上找(最好用)

Qt Creator  帮助->索引

Python中查找帮助信息 

dir(QLabel)会列出QLabel的所有属性和方法的名称,包括所有从父类继承的属性和方法 

 

help(Qlabel)会更详细地列出QLabel类的所有属性和方法

help(Qlabel.setText)用来显示该方法的原型

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/184044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习记录678@项目管理之合同管理案例

案例 系统集成商 Simple 公司与生产型企业 Perfect 集团签订了一份企业MIS(管理信息系统)开发合同,合同已执行到设计和开发阶段,由于 Perfect 集团内部组织结构调整可能会影响核心业务的流程。集成商 Simple 公司提出建议,合同暂停执行至新的…

使用 Jenkins + Gitee + maven 自动化部署 Spring Boot

目录 1、前言 1 .1、插件简介 1.2、插件安装 2、创建Maven项目 2.1、新建一个全新的项目 2.2、拷贝已有项目 3、项目配置 3.1 、General 3.2、源码管理 3.3、构建触发器 3.4、构建环境 3.5、Pre Steps 3.6、Build 1)Root POM 2)Goals and…

kubenertes集群部署kubeadm方式

一、安装要求 1、3台机器),操作系统Centos7,5.4内核,CentOS 7.x 系统自带的3.10.x内核存在一些Bugs.导致运行的Docker.Kubernetes不稳定。 2、硬件配置:4GB内存,至少2个CPU或更多CPU,至少硬盘30GB或更多 3、集群中所有机器之间网…

41 锚框【动手学深度学习v2】】

41 锚框【动手学深度学习v2】】 锚框:对边框位置的猜测。 先提出多个框在某个地方,比如5个,然后去看这5个框里面到底有没有物体。 两次预测:锚框位置和锚框内物体的预测。 如何处理锚框? IoU - 交并比 比较两个框之…

Java开发实现图书管理系统(超详细)

本文用Java代码实现图书代码管理系统,有些地方可能会有纰漏,希望各位大佬鉴赏!! 文章目录 文章目录 一、Java实现图书管理系统 1.1创建book包 二、创建图书管理系统的操作包 2.1创建Operation接口 三、创建User包 3.1创建User类 四…

深度盘点时间序列预测方法

本篇介绍时间序列的定义、任务、构成以及预测方法,主要是基本概念的介绍和理解。 时间序列定义 时间序列,通俗的字面含义为一系列历史时间的序列集合。比如2013年到2022年我国全国总人口数依次记录下来,就构成了一个序列长度为10的时间序列…

CAN FD的一致性测试 助力汽车电子智能化

后起之秀——CAN FD:随着各个行业的快速发展,消费者对汽车电子智能化的诉求越来越强烈,这也致使整车厂将越来越多的电子控制系统加入到汽车控制中。在传统汽车、新能源汽车、ADAS和自动驾驶等汽车领域中,无不催生着更高的需求&…

4.kafka--生产调优

文章目录1.硬件配置选择1.场景说明2.服务器台数选择3.磁盘选择4.内存选择1) 堆内存配置2)页缓存配置5. cpu选择6.网络选择2.生产者3.kafka broker4. 服役新节点,退役旧节点1)创建一个要均衡的主题。2) 生成一个负载均衡的计划leader分布不均匀…

多人配音怎么做的?这两个多人配音方法分享给你

大家在刷一些短视频的时候,肯定有看到过一些搞笑的视频,而这些视频总能让我们捧腹大笑,过后再多看几次,其实你可以明显的发现这是多人互动对话或者一人分饰多角所呈现的,我们想要做出这种类型的视频,一般需…

法律常识(五)《消费者权益保护法》解读与举例

目录 酒楼谢绝客户自带酒水,合法吗? 侵犯消费者人格尊严,应承担民事责任 某公司出售伪劣产品致人损害,需双倍赔偿 农民购买、使用直接用于农业生产的生产资料 《中华人民共和国产品质量法》相关记录 《中华人民共和国反不正…

Android 双屏异显(Presentation) 开发,将第二个页面投屏到副屏上

1. 背景 最近开发的一个项目,有两个屏幕,需要将第二个页面投屏到副屏上,这就需要用到Android的双屏异显(Presentation)技术了,研究了一下,这里做下笔记。 我们那个副屏是一块汽车的后视镜(流媒体后视镜),是…

超详细:KNN与K-means从入门到实战

作者:王同学 来源:投稿 编辑:学姐 1. 基本概念 1.1 KNN k近邻法(k-nearest neighbor,k-NN)是一种基本分类与回归方法。 k近邻法的输入为实例的特征向量对应于特征空间的点;输出为实例的类别&…

CnOpenData食品安全抽检数据

一、数据简介 食品安全是关乎人体生命健康的公共卫生问题。近年来,频繁发生的食品安全事件给人民的生命健康带来了巨大威胁,并成为人们关注的热点问题。   民以食为天,食以安为先。由于消费者和生产者之间存在信息不对称,完善…

【Linux】---进程程序替换

进程替换出现的背景我们可以用fork函数来创建子进程,使父子进程同时出现。正所谓子承父业,子进程在刚被创建时和父进程共享数据和代码,但是操作者想让子进程执行一个全新的程序,这个使子进程执行全新程序的操作叫做进程程序替换。…

前端播放大视频卡顿的解决(m3u8视频流)

前言 最近在一个大屏看板项目中有一个需求是:要求视频和看板要进行来回切换。 最开始的做法是将MP4视频放在项目里,在本地运行时是没什么问题的,但是在往仓库里提交代码时出现了问题。当单个文件超过100MB时会导致代码提交失败; …

【闲聊杂谈】直击重灾区 - 多线程与高并发

在开始学习多线程与高并发的知识之前,我想先问一个问题:你平时在写代码的时候,有没有刻意的去思考如何压榨CPU性能?其实纵观整个编程的发展历史,其实就是一部对于CPU性能压榨的血泪史。 单进程人工切换 最早的编程…

@Reference、@Autowired、@Resource的区别

目录 1. Autowired 和 Resource 的区别相同点:不同点:Resource 装配顺序2. Reference 和 Autowired 的区别理解1理解2理解31. Autowired 和 Resource 的区别 相同点: Resource 的作用相当于Autowired ,均可标注在字段或属性的se…

4、因果法

因果图中的图形符号 恒等。若原因出现,则结果出现;若原因不出现,则结果不出现。非。若原因出现,则结果不出现;若原因不出现,则结果出现。或。若几个原因中有一个出现,则结果出现;若几…

章节8 文本编辑器

8-Linux文本编辑器 文本编辑器 Windows:Notepad(记事本)、Sublime、UltraEdit等 Linux:VI/VIM (最常用)、nano、Emacs、Sed、gedit、Kate等 01 VI和VIM的区别 VI和VIM的区别 VI:Visual In…

C 语言零基础入门教程(十六)

C 位域 如果程序的结构中包含多个开关量,只有 TRUE/FALSE 变量,如下: struct {unsigned int widthValidated;unsigned int heightValidated; } status;这种结构需要 8 字节的内存空间,但在实际上,在每个变量中&#…