使用eric创建一个PyQt项目

2024-04-24 08:08
文章标签 使用 项目 创建 pyqt eric

本文主要是介绍使用eric创建一个PyQt项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.新建项目

打开eric,点击【项目】-【新建】,会弹出如下的对话框。这里我们创建一个名为pyqtdemo的项目。注意,在创建项目时,eric不会自动根据填写的项目名称修改项目文件夹名称!


点击确定之后,可以看到一个源代码树中只有__init__.py的项目。当然,此时eric还创建了几个文件,并不会在这里显示出来,他们分别是项目文件”pyqtdemo.e4p”和”_eric4project”文件夹。

2.新建窗体

将左侧的【源代码】选项卡切换至【窗体】选项卡(左数第二个)。


右键空白区域,选择【新建窗体】。


在弹出的对话框中选择【对话框】。


在弹出的文件对话框中,选择文件位置,并填写文件名称。这里,我们将其命名为pyqtdemo.ui。


确定后,就可以看到【窗体】选项卡中,有一个pyqtdemo.ui文件了。

3.设计窗体

右键点击“pyqtdemo.ui”文件,选择【在Qt设计师中打开】,我们将一睹Qt Designer的芳容。


从图中可以看到,Qt Designer分为如下几个部分:

  • 菜单栏:包括文件、编辑、窗体、视图、设置、窗口和帮助。
  • 工具栏:包括文件操作、部件前后置、编辑窗口部件、编辑信号/槽、编辑伙伴、编辑Tab顺序、布局方式、调整大小等。
  • 部件栏:包括各种可用部件。
  • 窗体设计区域
  • 对象查看器:可以查看各部件对象关系树及其所属的类
  • 属性编辑器
  • 信号/槽编辑器
  • 动作编辑器
  • 资源编辑器

3.1 修改窗体属性

默认的窗体属性中,objectName(部件名称,其他程序引用时使用)默认为Dialog,windowTitle(窗体标题)默认也是Dialog。我们可以根据自己的需要,对对话框的各个属性进行修改。这里,我只修改了windowTitle为“PyQt Demo”,并改变了其大小。

3.2 添加部件

从左侧的widget box中拖出3个PushButton,1个label。修改它们的objectName、text等属性。其中3个PushButton的ObjectName分别为btn1、btn2、btnClose。

添加后的效果图,如下图所示:


4.信号与槽

4.1 概念

在PyQt4中,事件处理的相关术语为“信号(signal)”和“槽(slot)”。

信号的含义就是我们常说的事件,比如按钮被按下、复选框勾选状态变更、可输入文本框文本变更等等。

的含义则是事件处理函数,比如关闭窗体、隐藏窗体、最大/小化、设置焦点、重绘等。

4.2 使用一个自带的槽

我们从工具栏中,选择【编辑信号/槽】。


拖动要编辑的部件,会出现一个类似于电路中接地符号的标志,并弹出对话框:


这里,我们选择clicked(),即按钮被按下,此时看到右侧可选的槽并不多,并且没有我们希望使用到的关闭功能。

勾选【显示从QWidget继承的信号和槽】,这时可以发现,右侧的槽多了很多。在其中找到close(),点击确定。此时,点击【关闭】按钮执行对话框关闭的功能就已经实现了。

下图是已经创建了【关闭】按钮槽之后的窗体设计图。


4.3 第一次运行

虽然只实现了一个关闭功能,但是还是让我们先来看看如何运行这个到目前为止一行代码都没有写过的程序吧。

现在回到eric的界面,右键“pyqtdemo.ui”,选择【编译窗体】。


短暂的时间过后,可以看到如上图的编译成功提示。这时,我们切换到【源代码】选项卡,可以看到一个名为Ui_pyqtdemo.py的文件,这就是根据刚才那个ui文件自动编译而成的,我们不需要对其进行任何修改,也不应当对其进行任何修改,因为,任何对这种文件,在下次编译后,之前的修改会全部不存在

看,下图,就是我们第一次运行时的场景。在eric里,我们可以F2直接运行,或F5进行调试。


当我按下【关闭】的时候,窗体就会被关闭。

4.4 创建一个自定义槽

使用自带槽的方式很简单,然而,它所能实现的功能也是有限的,在我们的开发中,绝大多数信号发生时,不会使用默认的槽。因此,这一小节将通过按钮1、2的实现来介绍如何创建一个自定义槽。

自定义槽,就要求自己写其中的槽函数,而之前的操作中,我们还没有动手写过一次代码,那么这个槽的代码写在哪里呢?

我们再切换回【窗体】选项卡,右键pyqtdemo.ui,选择【生成对话框代码】。

首先,点击【新建】,新建一个类,在这里可以修改类名、文件名和路径。


然后在下面的选框中,选择自己需要使用到的信号。比如,我的选择如下图所示,是两个按钮被按下时的信号:


这时,就生成了一个默认的代码。

# -*- coding: utf-8 -*-"""
Module implementing Pyqtdemo.
"""from PyQt4.QtGui import QDialog
from PyQt4.QtCore import pyqtSignaturefrom Ui_pyqtdemo import Ui_Dialogclass Pyqtdemo(QDialog, Ui_Dialog):"""Class documentation goes here."""def __init__(self, parent = None):"""Constructor"""QDialog.__init__(self, parent)self.setupUi(self)@pyqtSignature("")def on_btn1_clicked(self):"""Slot documentation goes here."""# TODO: not implemented yetraise NotImplementedError@pyqtSignature("")def on_btn2_clicked(self):"""Slot documentation goes here."""# TODO: not implemented yetraise NotImplementedError


对这个代码进行修改,实现预期的内容。

这里的修改中,其一是对import语句进行了修改,因为在一般的编程中,可能会用到QtGui和QtCore的多个类,并且默认代码的写法也可能造成命名空间的污染;其二是对于按钮被按下的状态添加了修改label文字内容的槽函数;其三,添加了窗体运行代码(见之前的文章)。

下面是按钮1被按下时候的效果图:


按钮2被按下的效果图:


这篇关于使用eric创建一个PyQt项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/931193

相关文章

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.