PyQt4 UI设计和调用 使用eric6
使用工具eric6
安装包地址:
http://eric-ide.python-projects.org/eric-download.html
1.需要安装python和pyqt为前提,然后安装eric
2.安装好后在 C:\Python27\Lib\site-packages\eric6 路径下找到 eric6.pyw ,打开eric6
3.第一次打开需要设置API等参数

4.使用qt编辑器开发ui界面

5.在eric内ui文件上右键编译窗体
6.生成对话框代码
计算器测试程序
# -*- coding: utf-8 -*-
"""
Module implementing Dialog_calc.
"""
from PyQt4.QtCore import pyqtSignature
from PyQt4.QtGui import QDialog
from Ui_UI_calc import Ui_Dialog
from PyQt4 import QtCore, QtGui
import sys
class Dialog_calc(QDialog, Ui_Dialog):
"""
Class documentation goes here.
"""
lcdstring = ''
operation = ''
currentNum = 0
prevlousNum = 0
result = 0
def __init__(self, parent=None):
"""
Constructor
@param parent reference to the parent widget
@type QWidget
"""
QDialog.__init__(self, parent)
self.setupUi(self)
self.action()
def action(self):
#定义信号和槽关系
#按下数字执行的方法
self.connect(self.pb0, QtCore.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self.pb1, QtCore.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self.pb2, QtCore.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self.pb3, QtCore.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self.pb4, QtCore.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self.pb5, QtCore.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self.pb6, QtCore.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self.pb7, QtCore.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self.pb8, QtCore.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self.pb9, QtCore.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self.pb_point, QtCore.SIGNAL('clicked()'), self.buttonClicked)
#按下操作执行的方法
self.connect(self.pb_plus, QtCore.SIGNAL('clicked()'), self.opClicked)
self.connect(self.pb_sub, QtCore.SIGNAL('clicked()'), self.opClicked)
self.connect(self.pb_mul, QtCore.SIGNAL('clicked()'), self.opClicked)
self.connect(self.pb_div, QtCore.SIGNAL('clicked()'), self.opClicked)
#按下清除执行的方法
self.connect(self.pb_clear, QtCore.SIGNAL('clicked()'), self.clearClicked)
#按下等于号执行的方法
self.connect(self.pb_eq, QtCore.SIGNAL('clicked()'), self.eqClicked)
def buttonClicked(self):
#最多显示8位
# print len(Dialog_calc.lcdstring)
if len(Dialog_calc.lcdstring) <= 7 :
Dialog_calc.lcdstring += self.sender().text()
#第一个输入的是小数点时候替替换为0.
if Dialog_calc.lcdstring == '.':
Dialog_calc.lcdstring = '0.'
#去掉多次输入小数点时候的错误
elif str(Dialog_calc.lcdstring).count('.') > 1:
Dialog_calc.lcdstring = str(Dialog_calc.lcdstring)[:-1]
self.lcd.display(Dialog_calc.lcdstring)
Dialog_calc.currentNum = float(Dialog_calc.lcdstring)
def opClicked(self):
Dialog_calc.prevlousNum = Dialog_calc.currentNum
Dialog_calc.currentNum = 0
Dialog_calc.lcdstring = ''
Dialog_calc.operation = self.sender().objectName()
def clearClicked(self):
Dialog_calc.lcdstring = ''
Dialog_calc.operation = ''
Dialog_calc.currentNum = 0
Dialog_calc.prevlousNum = 0
Dialog_calc.result = 0
self.lcd.display('0')
def eqClicked(self):
if Dialog_calc.operation == 'pb_plus':
Dialog_calc.result = Dialog_calc.prevlousNum + Dialog_calc.currentNum
self.lcd.display(Dialog_calc.result)
elif Dialog_calc.operation == 'pb_sub':
Dialog_calc.result = Dialog_calc.prevlousNum - Dialog_calc.currentNum
self.lcd.display(Dialog_calc.result)
elif Dialog_calc.operation == 'pb_mul':
Dialog_calc.result = Dialog_calc.prevlousNum * Dialog_calc.currentNum
self.lcd.display(Dialog_calc.result)
elif Dialog_calc.operation == 'pb_div':
if Dialog_calc.currentNum == 0:
self.lcd.display('Error')
Dialog_calc.result = 0
else:
Dialog_calc.result = Dialog_calc.prevlousNum / Dialog_calc.currentNum
self.lcd.display(Dialog_calc.result)
Dialog_calc.currentNum = Dialog_calc.result
Dialog_calc.lcdstring = ''
def closeEvent(self, QCloseEvent):
reply = QtGui.QMessageBox.question(self,u'警告',u'是否退出',QtGui.QMessageBox.Yes,QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
QCloseEvent.accept()
else:
QCloseEvent.ignore()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
mycalc = Dialog_calc()
mycalc.show()
sys.exit(app.exec_())
7.F2运行代码,当然也可以用PyCharm去写,比较习惯点。

PyQt4 UI设计和调用 使用eric6的更多相关文章
- Qt Designer设计 UI 文件并调用
本文介绍的是Qt Designer设计 UI 文件并调用,在坛子里逛了一圈,关于UI方面的好像不怎多,本篇给大家分享一下. AD: 2013云计算架构师峰会超低价抢票中 Qt Designer设计 U ...
- Android 高级UI设计笔记07:RecyclerView 的详解
1. 使用RecyclerView 在 Android 应用程序中列表是一个非常重要的控件,适用场合非常多,如新闻列表.应用列表.消息列表等等,但是从Android 一出生到现在并没有非常 ...
- 从Web借鉴UI设计
从Web借鉴UI设计 用户体验已经成为衡量应用软件质量的重要标准.在过去我们可能会惊叹于某个Web应用的华丽界面,现在,随着HTML5的强势登场,各类表现层技术及开发框架的发布,Web与窗体应用的界限 ...
- 【转】【Android UI设计与开发】之详解ActionBar的使用,androidactionbar
原文网址:http://www.bkjia.com/Androidjc/895966.html [Android UI设计与开发]之详解ActionBar的使用,androidactionbar 详解 ...
- 说说UI设计
近期的项目验收中,无数次的提到了UI的设计,首先来说说为什么UI设计如此重要. 对于用户来说产品的外观是最先映入眼帘的,无论你用了什么高端的技术,无论你后台代码封装的多么好,用户是无法体会到的,能体会 ...
- 为何invalidate()不可以直接在UI线程中调用&invalidate与postInvalidate
1.android ui操作为什么一定要在主线程中执行? 答:Android UI操作是单线程模型,关于UI更新的相关API(包括invalidate())都是按照单线程设计的,对于多线程运行时不安全 ...
- GUI设计和UI设计有什么区别?
首先从技术的角度分析两者处于包含与被包含的关系. GUI=Graphical User Interface,是指在计算机出现后,在屏幕上使用图形界面来帮助(User)与机器打交道用的界面接口,泛指在计 ...
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
本系列文章都会以一个程序的实例开发为主线来进行讲解,以求达到一个循序渐进的学习效果,这样更能加深大家对于程序为什么要这样写的用意,理论加上实际的应用才能达到事半功倍的效果,不是吗? 最下方有源码的下载 ...
- PROJECT | 四则运算UI设计 - 项目总结
[项目Github地址] https://github.com/oTPo/hw2 [项目规划] PSP表格 事项 预计时间(min) 实际花费时间(min) 需求分析 60 60 开发流程分析 30 ...
随机推荐
- xcode7和ios9适配之路
从xcode6.x升级xcode7.2之后,发现要做一堆事情来做适配,不然之前的项目没法好好执行. 一.换库 dylib后缀的库都要换成tbd后缀的.例如以下所看到的 换库前: 换库后: 二.http ...
- java - day14 - InnerClass
内部类使用 package com.InnerClass; public class Mama { String name; Baby baby; Mama(String name){ this.na ...
- java - day10 - uptest
package day03; public class UpTest { public static void main(){ Aoo o = new Aoo(); o.a = 3; o.b = 3; ...
- phxsql安装小记
PhxSQL具有服务高可用.数据强一致.高性能.运维简单.和MySQL完全兼容的特点. 服务高可用:PhxSQL集群内只要多数派节点存活就能正常提供服务:出于性能的考虑,集群会选举出一个Master节 ...
- sql server 数据库基础知识(一)
主键(PrimaryKey):主键就是一个表中每个数据行的唯一标识.不会有重复值的列才能当主键.一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键.SQLServer中生成GUID ...
- HDU 5355 Cake(2015多校第六场,搜索 + 剪枝)
Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Sub ...
- Android Studio 使用笔记: 重命名和重构
重命名 选中一个变量名称,菜单才是可用状态.然后可以根据系统给出的建议或者自己重新定义变量名称. 快捷键:Shift + F6 (Windows和Mac都是一样的) 重构 选中需要重构的代码,可以按照 ...
- abp相关
在.core中增加类.并指定属性长度. nutget 中运行Add-Migration 名称 Update-Database -Verbose 迁移成功. 1.安装指定版本类库install-pack ...
- LeetCode459. Repeated Substring Pattern
Description Given a non-empty string check if it can be constructed by taking a substring of it and ...
- Servlet HTTP 状态码
HTTP 请求和 HTTP 响应消息的格式是类似的,结构如下: 初始状态行 + 回车换行符(回车+换行) 零个或多个标题行+回车换行符 一个空白行,即回车换行符 一个可选的消息主体,比如文件.查询数据 ...