用 eric6 与 PyQt5 实现python的极速GUI编程(系列01)--Hello world!
【题记】
我是一个菜鸟,这个系列是我的学习笔记。
PyQt5 出来有一段时间了, PyQt5 较之 PyQt4 有一些变化,而网上流传的几乎都是 PyQt4 的教程,照搬的话大多会出错。
eric6 也是刚刚出来,eric6 与 PyQt5 结合的教程网上几乎没有。
本人也是一边学习,一边摸索,并记录与此,希望帮到有需要的朋友,更希望路过的大侠多多指教为好。
【引子】
用 eric6 与 PyQt5 结合,非常方便的实现界面与逻辑分离,满足python的极速GUI编程,你只需要关注程序的逻辑实现,不需要在界面上花很多时间。
可以说这是一对完美的组合!
下面的内容基于:windows 7 + python 3.4.2 + PyQt5 + eric 6
【概览】
本文实现如下的程序:

主要步骤如下:
1、在eric6中新建项目
2、进入PyQt5 Desinger编辑图形界面(自动进入),并保存
3、回到eric 6将刚才的界面文件编译
4、然后给界面添加自己的程序逻辑
5、py2exe打包成exe文件(此步略)
【正文】
1、在eric6中新建项目








2、进入PyQt5 Desinger编辑图形界面(自动进入),并保存

在窗体中添加一个文本标签(label)、两按钮(pushButton)

设置文本标签、两按钮的对象名(objectName)为:label_hello,pushButton_ok,pushButton_close
设置文本标签、两按钮的文字(text)为:"在此显示","确定","退出"

给退出按钮添加信号/槽 (注:信号/槽机制是PyQt独有的信号传递机制,使用非常方便)


保存,然后关闭PyQt Designer

3、回到eric 6,将刚才的界面文件编译
回到eric 6后,发现窗体下多了个hello.ui文件,此文件本质是一个xml格式文件,不能被运行,需要右击它,选择 编译窗体


编译成功之后,发现源文件下多出了Ui_hello.py文件,这个文件就可以运行了

试着运行它,如图:

Wow! 界面出来了。一切正常。不过你会发现,只有退出按钮起作用,而确定按钮没反应。那是因为我们还没给确定按钮添加逻辑代码

这事好办,到窗体下右击hello.ui文件,选择 生成对话框代码


此处勾选pushButton下的on_pushButton_ok_clicked()

回到源代码下,发现又多出了一个hello.py文件

不管三七二十一,先运行它再说。呀!错误!!!

这个错误应该是eric 6的一个bug!!!,去掉Ui前面的点号,再运行,就没有报错了。真是太好了!诶,等一下,怎么没看到窗体出来呢?

少了几行代码,此处可以认为也是eric 6的一个bug。那就自己动手吧,在hello.py的最下面添加这几行:
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
dlg = Hello()
dlg.show()
sys.exit(app.exec_())
长嘘一口气,窗体终于又出来了,但是点击确定按钮的时候报错了又。原因很简单,我们还没有覆写给确定按钮的逻辑代码

把原来的代码删除,修改为一句。没错,我们的逻辑代码就是一句代码:
@pyqtSlot()
def on_pushButton_ok_clicked(self):
self.label_hello.setText('Hello world!')

保存一下,然后运行。OK,大功告成!

最后的话,eric + pyqt 进行python的gui编程真的是太方便了,只需要关注逻辑实现就可以了
(一个字一个字敲,一张图一张图截,终于完成了。欢迎转载,不过请保留作者名及原文链接。)
用 eric6 与 PyQt5 实现python的极速GUI编程(系列01)--Hello world!的更多相关文章
- 用 eric6 与 PyQt5 实现python的极速GUI编程(35篇PyQT和200多篇Python)
[题记] 我是一个菜鸟,这个系列是我的学习笔记. PyQt5 出来有一段时间了, PyQt5 较之 PyQt4 有一些变化,而网上流传的几乎都是 PyQt4 的教程,照搬的话大多会出错. eric6 ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列04)---- PyQt5自带教程:地址簿(address book)
[引子] 在PyQt5自带教程中,地址簿(address book)程序没有完全实现界面与业务逻辑分离. 本文我打算用eric6+PyQt5对其进行改写,以实现界面与逻辑完全分离. [概览] 1.界面 ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列03)---- Drawing(绘图)(2)-- 画点
[概览] 本文实现如下的程序:(在窗体中绘画出[-100, 100]两个周期的正弦函数图像) 主要步骤如下: 1.在eric6中新建项目,新建窗体 2.(自动打开)进入PyQt5 Desinger,编 ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列03)---- Drawing(绘图)(1)-- 绘写文字
[概览] 本文实现如下的程序:(在窗体中绘画出文字) 主要步骤如下: 1.在eric6中新建项目,新建窗体 2.(自动打开)进入PyQt5 Desinger,编辑图形界面,保存 3.回到eric 6, ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列02)---- 省市县(区)下拉列表多级联动
[概览] 本文实现如下的程序: 主要步骤如下: 1.在eric6中新建项目,新建窗体 2.(自动打开)进入PyQt5 Desinger,编辑图形界面,保存 3.回到eric 6,对上一步得到的界面文件 ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列03)---- Drawing(绘图)(3)-- 画线
[概览] 本文实现如下的程序:(在窗体中绘画出各种不同风格的线条) 主要步骤如下: 1.在eric6中新建项目,新建窗体 2.(自动打开)进入PyQt5 Desinger,编辑图形界面,保存 3.回到 ...
- python基础知识-GUI编程-TK-StringVar
1.如何引出StringVar 之前一直认为StringVar就是类似于Java的String类型的对象变量,今天在想要设置StringVar变量的值的时候,通过搜索发现StringVar并不是pyt ...
- python 面向对象编程案例01
# -*- coding: utf-8 -*- #python 27 #xiaodeng #面向对象编程案例01 class Behave(): def __init__(self,name): se ...
- Python gui编程pyQt5安装步骤t
Python gui编程pyQt5安装步骤 pip install PyQt5 Pip3 install PyQt5 https://riverbankco ...
随机推荐
- Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感 是印度上古时期一些文献的总称
Atitit. <吠陀> <梨俱吠陀>overview 经读后感 是印度上古时期一些文献的总称 1. 印度古<吠陀>经,是印度上古时期一些文献的总称, 1 1.1 ...
- java编程思想第四版中net.mindview.util包下载,及源码简单导入使用
在java编程思想第四版中需要使用net.mindview.util包,大家可以直接到http://www.mindviewinc.com/TIJ4/CodeInstructions.html 去下载 ...
- fastCGI与PHP-fpm
fastCGI是nginx和php之间的一个通信接口,该接口实际处理过程通过启动php-fpm进程来解析php脚本,即php-fpm相当于一个动态应用服务器,从而实现nginx动态解析php.因此,如 ...
- Servlet/JSP-01 Servlet及其生命周期
一.起步 1.新建一个类继承Servlet接口 public class HelloServlet implements Servlet { @Override public void destroy ...
- Linux root 密码重置与用户管理
---forget root password restart your linux system press 'e' when start. press 'e' again then choose ...
- 【读书笔记《Android游戏编程之从零开始》】6.Android 游戏开发常用的系统控件(TabHost、ListView)
3.9 TabSpec与TabHost TabHost类官方文档地址:http://developer.android.com/reference/android/widget/TabHost.htm ...
- select2取值报错,Failed to read the 'selectionDirection' property from 'HTMLInputElement': The input element's type ('hidden') does not support selection.
用到了 select2 组件来多选收件人,用搜狗浏览器(6.2版高速模式)在执行到如下这句时报错(Uncaught InvalidStateError: Failed to read the 'sel ...
- Dubbo架构设计详解(转自shiyanjun.cn)
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模 ...
- 前端的瑞士军刀:Modernizr.js
前言 Modernizr.js既能给老版本浏览器打补丁,又能保证新浏览器渐进增强的用户体验. 作用: 从实际操作来看,Modernizr默认做的事情很少,除了(在你选择的情况下)给不支持html5的标 ...
- ZOJ 3967 Colorful Rainbows --栈的应用
题意:给出n条y=ai*x+bi的直线.对于这些直线,如果存在x使得该直线y大于其他任意一直线,那么这条直线可以被看见,问有多少条直线可以被看见. 做法什么的不讲了,参见:http://blog.cs ...