快速熟悉 PyQt5 与 Eric6 的极速 GUI 开发

完美安装Anaconda3+PyQt5+Eric6一文对PyQt5与Eric6的安装做了详细的记录。这次将结合使用PyQt5和Eric6以实例的方式向大家展示PyQt5与Eric6的极速GUI开发,同时也可以让大家对PyQt5与Eric6先混个脸熟。用Eric6与PyQt5结合,非常方便的实现界面与逻辑分离,满足python的极速GUI编程,你只需要关注程序的逻辑实现,而不需要在

大家好,又见面了,我是你们的朋友全栈君。

完美安装 Anaconda3 + PyQt5 + Eric6 一文对PyQt5与Eric6的安装做了详细的记录。这次将结合使用PyQt5和Eric6以实例的方式向大家展示PyQt5与Eric6的极速GUI开发,同时也可以让大家对PyQt5与Eric6先混个脸熟。

用 Eric6 与 PyQt5 结合,非常方便的实现界面与逻辑分离,满足python的极速GUI编程,你只需要关注程序的逻辑实现,而不需要在界面上花很多时间。

可以说这是一对GUI开发完美的组合!

好了,闲言碎语少说,来点实际的吧!

为了方便使用在正式开始之前我们先简单配置一下Eric6的项目工作区

配置Eric6

打开 Eric6
这里写图片描述

选择菜单栏 设置-首选项
这里写图片描述

在左侧列表中选择项目-多重项目,点击右侧图标后选定硬盘中的一个位置,我这里是F:\Python\PyQt5文件夹。选好后点击右下方的OK按钮。
这里写图片描述

简单配置后,让我们正式开始体验极速GUI开发

实例

建立项目

打开Eric6,菜单栏中选择项目-新建
这里写图片描述

在项目属性对话框中的项目名称中输入Hello,你会发现右下方的OK按钮不可用。究其原因是项目文件夹中显示的是我们刚设置的多重项目工作区目录,也就是说在该目录下可以存在多个项目。多个项目混在一起肯定是不行的了,还要将它们用文件夹区分开来,简而言之就是该目录下的每个文件夹就是一个项目(当然了,自己胡乱创建的文件夹肯定不是了,呵呵!)。找到原因后我们就可以解决问题了。

点击项目文件夹后面的图标
这里写图片描述

在打开的选择项目文件夹对话框中右键点击空白处,在弹出的菜单中选择新建-文件夹
这里写图片描述

更改新建文件夹的名称为Hello(一般与项目名称同),选中该文件夹后点击右下方的选择文件夹按钮
这里写图片描述

回到项目属性对话框后可以看到项目文件夹已变成F:\Python\PyQt5\Hello,同时右下角的OK按钮已显示可用。
这里写图片描述

点击OK按钮后出现一个提示框,是否将已有文件添加到项目中?虽然该项目文件夹下还没有任何文件,但是这里选择Yes,因为我曾经选择No后到运行脚本时发现不能执行该功能。
这里写图片描述

点击Yes后在弹出的文件类型关联对话框直接OK
这里写图片描述

观察程序主界面的标题栏发现显示Hello – eric6。在项目浏览器的顶部源代码标签里自动为我们生成一个_init_.py文件,该文件中没有任何代码,我们不用去理会。
这里写图片描述

创建窗体

点击源代码标签右边的窗体标签,在标签下面的空白处右键点击,弹出的菜单选择新建窗体
这里写图片描述

弹出新建窗体对话框,可以选择其它窗体类型,这里我们使用默认对话框类型,点击OK按钮
这里写图片描述

在弹出的新建窗体保存对话框中可以看到程序已将路径定位到项目文件夹下,输入文件名后点击保存按钮
这里写图片描述

在Eric6的窗体标签下可以看到程序已自动创建了HelloWindow.ui文件
这里写图片描述

设计窗体

点击上一步的保存按钮后,计算机会直接打开Qt设计师,并自动将HelloWindow.ui加载到程序中
这里写图片描述

在左侧的Widget Box里找到Push Button控件,用鼠标左键按住该控件不放,拖拽到HelloWindow.ui的设计窗体。拖拽两个Push Button控件到窗体
这里写图片描述

再找到Label控件,拖拽一个该控件到窗体
这里写图片描述

在程序的右侧观察对象查看器属性编辑器。使用对象查看器可以快速选取窗体中的控件,属性编辑器可以编辑修改窗体、控件的各种属性。

利用对象查看器选择我们刚拖拽的三个控件,分别将它们的objectName属性更改成:

  • 左边PushButton:Button_ok
  • 右边PushButton:Button_close
  • Label:label

    这里写图片描述

分别将它们的text属性更改成:

  • 左边PushButton:确定
  • 右边PushButton:关闭
  • Label:显示

这里写图片描述

编辑信号/槽

接下来给关闭按钮添加退出程序的命令。在Qt设计师中,可以很直观的为控件添加事件命令,在PyQt5中这种方式添加的事件命令被称为信号/槽。(注:信号/槽机制是PyQt独有的信号传递机制,使用非常方便)

点击工具栏的编辑信号/槽图标
这里写图片描述

鼠标移动到关闭控件上面,左键按下拖拽处红色地线标志后松开鼠标
这里写图片描述

弹出配置链接窗口,在该窗口中勾选显示从QWidget继承的信号和槽
这里写图片描述

在左侧列表选择clicked(),在右侧列表选择close()

这个操作的意义为:当点击关闭按钮时,执行关闭命令
这里写图片描述

点击OK后可以看到刚选择的两项已链接附加到关闭按钮上
这里写图片描述

点击工具栏中的保存按钮后关闭Qt设计师程序
这里写图片描述

编译测试

回到Eric6中,右键点击HelloWindow.ui文件,在弹出的菜单中选择编译窗体
这里写图片描述

稍等片刻后程序会提示编译成功
这里写图片描述

返回源代码标签可以发现项目中多了一个Ui_HelloWindow.py文件,双击该文件可以查看我们设计好的窗体代码
这里写图片描述

点击菜单栏的开始-运行脚本(或直接按键盘F2键)
这里写图片描述

在弹出的运行脚本对话框直接OK
这里写图片描述

OK后即可看到我们刚在Qt设计师中设计的窗体,点击关闭按钮
这里写图片描述

弹出对话框中直接OK,即可关闭该程序
这里写图片描述

进一步完善程序

到现在我们没有编写一句代码即可实现了程序的显示与退出

接下来我们手动给确定按钮添加事件命令

在Eric6中的项目浏览器中找到HelloWindow.ui文件,右键点击该文件,弹出菜单中选择生成对话框代码
这里写图片描述

在弹出的窗体代码产生器窗口中点击新建
这里写图片描述

弹出新建对话框类中输入类名后点击OK
这里写图片描述

回到窗体代码产生器窗口后展开Button_ok(QPushButton),勾选on_Button_ok_clicked(),点击OK
这里写图片描述

在项目浏览器中可以看到源代码标签下又多了一个HelloWindow.py文件
这里写图片描述

双击该文件查看程序内容。若现在F2,程序将会报错,将

from .Ui_HelloWindow import Ui_Dialog

中.Ui前面的点去掉

from Ui_HelloWindow import Ui_Dialog

这里写图片描述

保存后若F2,发现还是不行,程序一闪而过。给源码添加以下内容
这里写图片描述

保存后F2,没问题了,可以点击确定按钮后还是会报错,是因为我们还没有告诉程序点击确定按钮后程序做出什么反应,修改on_Button_ok_clicked函数如下
这里写图片描述

保存后F2,点击确定后Label内容显示会变成这是我的第一个 PyQt5 程序,一切正常
这里写图片描述

附录与后记

附图

附加图:Label控件的位置与宽度
这里写图片描述

附加图:完成后的文件
这里写图片描述

后记

虽然我们通过这个实例能够感受得到PyQt5与Eric6结合使用的强大功能与极速GUI开发的能力非比寻常,可是对于像我这样刚接触PyQt5与Eric6的童鞋来说,要想发挥PyQt5与Eric6的强大功能与极速开发也是痴人说梦,究其原因是PyQt5与Eric6的结合让我们只用少量的代码编写就可以实现很多强大的功能,几乎底层的代码都不用去自己编写,因此,PyQt5真正强大的内容离我们很远。

这个实例就像一层窗户纸被捅破了,但是我们根本就迈不过去。所以若要真的学会PyQt5我们还需多学些PyQt5的底层内容,多手动编写一些代码。当随着我们的PyQt5水平不断提高,到那时我们会发现PyQt5与Eric6结合使用才是如虎添翼,驰骋在程序的海洋。

代码贴附

最后将HelloWindow.py代码完整贴附如下:

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

""" Module implementing HelloWindow. """
import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog, QApplication

from Ui_HelloWindow import Ui_Dialog


class HelloWindow(QDialog, Ui_Dialog):
    """ Class documentation goes here. """
    def __init__(self, parent=None):
        """ Constructor @param parent reference to the parent widget @type QWidget """
        super(HelloWindow, self).__init__(parent)
        self.setupUi(self)

    @pyqtSlot()
    def on_Button_ok_clicked(self):
        self.label.setText('这是我的第一个 PyQt5 程序')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    dlg = HelloWindow()
    dlg.show()
    sys.exit(app.exec_())
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126629.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 前端vue面试题2020及答案_c++ 面试题

    前端vue面试题2020及答案_c++ 面试题总结出来的Vue面试题,持续更新…

  • 基于LSTM的DDPG实现

    基于LSTM的DDPG实现最近看了一些大佬的DDPG的实现(其实都是基于莫凡大佬的那个版本),结合我自己的毕设问题,发现只是用普通的全连接网络好像不太稳定,表现也不好,于是尝试了一下试着用一直对序列数据有强大处理能力的lstm来试试(虽然这个已经有人做过了),自己手动实现了一下基于lstm的ddpg,希望各位大佬指导指导。importtorchimporttorch.nnasnnimporttorch.op…

  • Java SoftReference

    Java SoftReferenceSoftReference的语义就是当内存不够用的时候,GC会回收SoftReference所引用的对象。所以,在memorysensitive的程序中将某些大型数据设置成SoftReference再合适不过了。创建一个SoftReference:[code="java"]Objectobj=newObject();SoftReferencesoftRef=…

  • ggplot2是什么_r语言ggplot2

    ggplot2是什么_r语言ggplot2ggplot2是R语言最为强大的作图软件包,强于其自成一派的数据可视化理念。当熟悉了ggplot2的基本套路后,数据可视化工作将变得非常轻松而有条理。本文主要对ggplot2的可视化理念及开发套路做

  • 作为程序员,你真的刻意练习了吗

    点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章我真的刻意练习了吗刻意练习真的很重要,作为一名程序员,在读完这本书之后,也听了有关这本书的一些解读。有一些自己的感受。我是大四的下学期开始健身的,不到三个月的时间,能明显感觉到自己有了胸肌和腹肌。而在没有去健身房之前,平时也会去跑跑步,去操场上玩玩双杆,然后做几个引体向上,在宿舍也做几个俯卧撑,但是这些练…

  • java 拉姆达表达式_一看就懂之java8新特性函数式编程:我是拉姆达表达式lambda…

    java 拉姆达表达式_一看就懂之java8新特性函数式编程:我是拉姆达表达式lambda…我们都知道,java8之后增加了很多新特性,大大的简化了代码的编写、阅读的负担。先发个牢骚:今天up主根据自己的理解跟大家说说新特性之一的lambdaexpress(拉姆达表达式),每当看到新的语法改动,内心我都是拒绝的。因为又要学习、又要适应、又要改变真烦人,可是没办法现在这几乎是所有大厂必须的操作。总不能看不懂人家写的代码吧,做IT行业尤其是软件工程师必须要保证自己的知识及时更新、知识面不…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号