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 ...
随机推荐
- 28. Search a 2D Matrix 【easy】
28. Search a 2D Matrix [easy] Write an efficient algorithm that searches for a value in an mx n matr ...
- jquery样式表和效果
$("p").css({ "color": "#ff0011", "background": "blue&qu ...
- MAC信息摘要
MAC(Message Authentication Code ,消息认证码算法)是含有密钥散列函数算法,兼容MD和SHA算法的特性,并在此基础上加入了密钥.因此,MAC也称为HMAC. ...
- ThinkPHP与EasyUI整合之二(datagrid):删除多条记录
学习EasyUI已有一段时间了,现在开始逐步把平时学习的细节和难点记录下来. 1. datagrid选中多条记录的语句是: var rows = $('#dg').datagrid('getSelec ...
- 什么是Web Services?
什么是Web Services? Web Services 是应用程序组件 Web Services 使用开放协议进行通信 Web Services 是独立的(self-contained)并可自我描 ...
- 进程已经被attach debug,如何解除其debug权限?
今天碰到一个问题,详情: 进程A创建了进程B,并且进程A在创建进程B的时候指定了debug权限: 我的进程C启动了一个Hook,然后系统将我的X dll载入到进程B中: 此时,用visual stud ...
- 针对中科院java接口的用法和问题
1.下载附加的中科院分词工具包(要下载的到我的博客里面免费下载就可以) 2.解压后会看到例如以下几个目录 3.把java工程导入eclipse中.点击import.再选择existing projec ...
- spring cloud 订单调用用户
下面实现一个订单调用用户实现例子,使用技术只要是spring,为以后操作负载打基础.(基于昨天别人问我的基础上做了实例供大家参考) 1.用户工程截图 : 2.用户工程启动类 3.用户工程控制类 4. ...
- http://www.haolizi.net/example/view_2380.html
null
- ASP.NET中RegisterStartupScript和RegisterClientScriptBlock有区别吗
今天用RegisterClientScriptBlock()方法调用了alertify.js(绚丽的实现alert()同样的提示功能): Page.ClientScript.RegisterClien ...