pyqt练习x5.0计算器

from __future__ import division

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

import sys,os,decimal,tempfile,math,time

from PyQt4 import QtGui,QtCore,Qt

class Jsj(QtGui.QWidget):

#print‘正在加入命令中‘

def __init__(self,parent=None):

QtGui.QWidget.__init__(self)

#创建窗口界面

self.widget=QtGui.QWidget()

self.setWindowTitle(u‘Bug个人简易计算器 v0.2版‘)#界面名字

self.setWindowIcon(QtGui.QIcon(‘E:\\pyqt\\file1\\untitled1\\pic.jpg‘))#界面图标

self.setGeometry(300,600,600,300)#界面大小

self.setToolTip(u‘这是一个计算器‘)#界面提示

self.setStyleSheet("* { rgba(153,214,200,255) }")

#新增背景颜色

self.resize(600,400)

#self.m1=QtGui.QLabel(u‘Bug个人简易计算器 v0.2版‘,self)

#self.m1.setGeometry(400,250,300,40)

#self.m1.setStyleSheet("* { rgba(20,21,128,240) }")

#创建按钮:运算按钮

self.run1=QtGui.QPushButton(u‘运算(R)‘,self)

self.run1.setGeometry(200,250,80,30)

self.run1.setToolTip(u‘运算,Ctrl+R‘)

self.run1.setShortcut(‘Ctrl+R‘)

self.run1.setStyleSheet("* { rgba(67,142,219,240) }")

#创建按钮:清除按钮

self.run10=QtGui.QPushButton(u‘清除(C)‘,self)

self.run10.setGeometry(60,250,80,30)

self.run10.setToolTip(u‘清除,Alt+C‘)

self.run10.setShortcut(‘Alt+C‘)

self.run10.setStyleSheet("* { rgba(67,142,219,240) }")

self.time1=QtCore.QTimer(self)

self.connect(self.time1,QtCore.SIGNAL(‘timeout()‘),self.show1)

self.time1.start(1000)

#label标签:数字1

self.run3=QtGui.QLabel(u‘数字1;‘,self)

self.run3.setGeometry(20,20,80,30)

#label标签:数字2

self.run4=QtGui.QLabel(u‘数字2;‘,self)

self.run4.setGeometry(20,80,80,30)

#label标签:结果

self.run5=QtGui.QLabel(u‘结果:‘,self)

self.run5.setGeometry(20,150,80,30)

#输入数据

#第一个数

self.run7=QtGui.QLineEdit(u‘请输入第一个数‘,self)

self.run7.setGeometry(60,20,400,30)

#查询记录

self.jl=QtGui.QPushButton(u‘查询上一次记录‘,self)

self.jl.setGeometry(10,360,100,40)

self.jl.setToolTip(u‘查询上一次记录,Alt+K‘)

self.jl.setShortcut(‘Alt+K‘)

self.jl.setStyleSheet("* { rgba(67,142,219,240) }")

self.about=QtGui.QPushButton(u‘关于本软件?暂时不支持本按钮功能‘,self)

self.about.setGeometry(440,360,70,30)

self.about.setToolTip(u‘关于本软件?暂时不支持本按钮功能‘)

#第二个数

self.run8=QtGui.QLineEdit(u‘请输入第二个数‘,self)

self.run8.setGeometry(60,80,400,30)

#第三个数

self.run6=QtGui.QLineEdit(u‘‘,self)

self.run6.setGeometry(60,150,400,30)

#用来显示符号,比如:+,-*等,现在用单选按钮

self.runj0=QtGui.QCheckBox(u‘加法(+)‘,self)

self.runj0.setGeometry(480,0,80,30)

self.runj1=QtGui.QCheckBox(u‘减法(-)‘,self)

self.runj1.setGeometry(480,20,80,30)

self.runj2=QtGui.QCheckBox(u‘乘法(*)‘,self)

self.runj2.setGeometry(480,40,80,30)

self.runj3=QtGui.QCheckBox(u‘除法(/)‘,self)

self.runj3.setGeometry(480,60,80,30)

self.runj4=QtGui.QCheckBox(u‘除法(%)‘,self)

self.runj4.setGeometry(480,80,80,30)

self.runj5=QtGui.QCheckBox(u‘根号(sqrt)‘,self)

self.runj5.setGeometry(480,100,80,30)

self.runj6=QtGui.QCheckBox(u‘负数(Negative)暂停此功能无法使用‘,self)

self.runj6.setGeometry(480,120,800,30)

self.connect(self.run10, QtCore.SIGNAL("clicked()"),self.clearMask)

#显示动态时间

self.datateime1=QtGui.QLineEdit(u‘请按下回车显示时间:‘,self)

self.datateime1.setGeometry(10,310,300,30)

#其他说明

#添加制作人员名单

self.renyuan=QtGui.QLabel(u‘制作人员及程度:Bug,1级‘,self)

self.renyuan.setGeometry(400,180,800,30)

#其他说明

#添加制作软件版本

self.renyuan=QtGui.QLabel(u‘制作软件及版本:python2.7+pyqt4.0‘,self)

self.renyuan.setGeometry(400,205,800,30)

#其他说明

#添加联系方式

self.lxfs=QtGui.QLabel(u‘邮箱:[email protected]‘,self)

self.lxfs.setGeometry(400,230,800,30)

#其他说明

#添加其他说明:

self.qtfs=QtGui.QLabel(u‘其他内容;暂无其他内容‘,self)

self.qtfs.setGeometry(400,255,800,30)

#制作年份

self.year=QtGui.QLabel(u‘制作年份;2013-9-18‘,self)

self.year.setGeometry(400,285,800,30)

#更新年份

self.year=QtGui.QLabel(u‘更新年份;2013-9-26‘,self)

self.year.setGeometry(400,315,800,30)

self.run6.selectAll()

self.run7.selectAll()

self.run8.selectAll()

self.run7.setFocus()

#单选符号

self.buttonBox=QtGui.QButtonGroup(None)#None

self.buttonBox.addButton(self.runj0,1)#加法

self.buttonBox.addButton(self.runj1,2)#减法

self.buttonBox.addButton(self.runj2,3)#乘法

self.buttonBox.addButton(self.runj3,4)#除法

self.buttonBox.addButton(self.runj4,5)#复数

self.buttonBox.addButton(self.runj5,6)#复数

self.buttonBox.addButton(self.runj6,7)#复数

self.la=QtGui.QLineEdit(u‘(暂时不能使用这个功能和查询功能也不能使用)‘,self)

self.la.setGeometry(120,360,300,40)

#对单选事件信号进行说明

QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("buttonClicked(int)"), self.buttonJudge)

self.connect(self.run1, QtCore.SIGNAL("clicked()"), self.mark)

#self.connect(self.run1, QtCore.SIGNAL("clicked()"), self.float_mark)

self.connect(self.run1, QtCore.SIGNAL("clicked()"), self.ChongShu)

#self.connect(self.run1, QtCore.SIGNAL("clicked()"), self.floatChongShu)

self.connect(self.buttonBox,QtCore.SIGNAL("clicked()"), self.buttonBoxx)

#第二个单选框的

self.connect(self.run1,QtCore.SIGNAL("clicked()"), self.error)

self.connect(self.run1,QtCore.SIGNAL("clicked()"), self.buttonBoxx)

def mouse1(self,e):

if e.button()==Qt.leftButton:

self.d1=e.globalPos()-self.frameGeometry().topLeft()

e.accept()

if e.button==Qt.RightButton:

self.close()

def mouse2(self,e):

if e.buttons()&Qt.leftButton:

self.move(e.globalPos()-self.dragPosition)

e.accept()

def show1(self):

time1=QtCore.QTime.currentTime()

data1=Qt.QDate.currentDate()

text=data1.toString(‘yyyy-MM-dd‘)+‘  ‘+time1.toString(‘hh:mm:ss‘)

#print text

self.datateime1.setText(str(text))

#self.datateime1.setText(text)

def addButton(self):

path=‘E:\\pyqt\\2013year9month1\\file1\\log.log‘

f=open(path,‘r‘)

if f.read() in ‘‘:

self.la.setText( u‘当前无历史记录‘)

print  QtGui.QMessageBox.information(self,‘Remind:‘,self.tr(‘No record‘))

f.close()

def write1(self):

path=‘E:\\pyqt\\2013year9month1\\file1\\log.log‘

f=open(path,‘w‘)

if f.writelines([self.run7.text(),self.run8.text(),self.run5.text()]):

print‘ff‘

self.la.setText([self.run7.text(),self.run8.text(),self.run5.text()])

f.close()

#现在对按钮和那些符号进行控制

#先对self.run7.text(),self.run8.text()进行判断,比如1+2的时候,就显示加法

def mark(self):

if self.runj0.isChecked():

t1=decimal.Decimal(str(self.run7.text()))

t2=decimal.Decimal(str(self.run8.text()))

t3=t1+t2

self.run6.setText(str(t3))

elif self.runj1.isChecked():

t1=decimal.Decimal(str(self.run7.text()))

t2=decimal.Decimal(str(self.run8.text()))

t3=t1-t2

self.run6.setText(str(t3))

elif self.runj2.isChecked():

t1=decimal.Decimal(str(self.run7.text()))

t2=decimal.Decimal(str(self.run8.text()))

t3=t1*t2

self.run6.setText(str(t3))

elif self.runj3.isChecked():

t1=decimal.Decimal(str(self.run7.text()))

t2=decimal.Decimal(str(self.run8.text()))

t3=t1/t2

self.run6.setText(str(t3))

elif self.runj4.isChecked():

t1=decimal.Decimal(str(self.run7.text()))

t2=decimal.Decimal(str(self.run8.text()))

t3=t1%t2

self.run6.setText(str(t3))

elif self.runj5.isChecked():

t1=decimal.Decimal(str(self.run7.text()))

t2=decimal.Decimal(str(self.run8.text()))

t3=math.sqrt(t1+t2)

self.run6.setText(str(t3))

elif self.runj6.isChecked():

t1=decimal.Decimal(str(self.run7.text()))

t2=decimal.Decimal(str(self.run8.text()))

t3=-(t1+t2)

self.run6.setText(str(t3))

#这部分单选用来选择符号

def buttonJudge(self):

if self.buttonBox.checkedId()==1:

print u"加法+"

if self.buttonBox.checkedId()==2:

print u"减法-"

if self.buttonBox.checkedId()==3:

print u"乘法*"

if self.buttonBox.checkedId()==4:

print u‘除法/‘

if self.buttonBox.checkedId()==5:

print u‘除法%‘

if self.buttonBox.checkedId()==6:

print u‘sqrt(根号)‘

#判断输入的数据类型

def clearMask(self):

if  self.connect(self.run10, QtCore.SIGNAL("clicked()"),self.clearMask):

self.run8.clear()

#self.run6.clear()

self.run7.clear()

self.la.clear()

#time.sleep(1)

print u‘清除成功‘

#print u‘清除时间:‘,time.strftime(‘%d-%m-%Y %H:%M:%S‘,time.localtime(time.time()))

#print u‘请继续运算你需要的数据类型‘

def close1(self):

if self.connect(self.run2, QtCore.SIGNAL("clicked()"),self.close1):

#print u‘退出时间:‘,time.strftime(‘%d-%m-%Y %H:%M:%S‘,time.localtime(time.time()))

print u‘退出程序!‘

#print u‘谢谢使用!‘

#print u‘欢迎下次再次使用本软件‘

os._exit(self.run2.close())

#time.sleep(1)

def closeEvent(self, event):

reply = QtGui.QMessageBox.question(self, u‘提示(X)‘,

u"是否要退出?", QtGui.QMessageBox.Yes,

QtGui.QMessageBox.No)

if reply == QtGui.QMessageBox.Yes:

event.accept()

else:

event.ignore()

#如果查询完了,要给用户一个提示,是否要清除之后 ,继续?

#这部分是处理异常,因为用户可能会输入不是数字的

#现在来设置对数字1或者数字2,或者2个出现的除数字之后的,如果不是数字,就出现错误,然后请重新输入

def ChongShu(self):

try:

if decimal.Decimal(str(self.run7.text())) or  decimal.Decimal(str(self.run8.text())):

pass

except ValueError:

print u‘invalid literal:‘,decimal.Decimal(str(self.run7.text())),decimal.Decimal(str(self.run8.text()))

print‘开始清除非法数据‘

self.run8.clear()

self.run7.clear()

print u‘清除非法数据‘

print‘请继续运算‘

#当未选中单选框时,提示错误

def buttonBoxx(self):

try:

if self.buttonBox.checkedId():

print u‘当前选中的是‘,self.buttonBox.checkedId()

except Exception:

print ‘error:‘,u‘未选中‘

#全部信息都显示在界面上

def error(self):

try:

if decimal.Decimal(str(self.run7.text())) or decimal.Decimal(str(self.run8.text())):

pass

except Exception:

print  QtGui.QMessageBox.information(self,‘error message:‘,self.tr(‘invalid literal‘))

app=QtGui.QApplication(sys.argv)

b=Jsj()

b.show()

sys.exit(app.exec_())

时间: 2024-10-14 07:49:58

pyqt练习x5.0计算器的相关文章

Android5.0 计算器计算结果不准确和结果末尾的多余的‘0’没有省略的解决方法

Android5.0 计算器计算结果不准确和结果末尾的多余的'0'没有省略 一.问题的描述: [测试步骤] 1.进入计算器 2.输入 100-99.9 3.查看计算结果 [测试结果] 1.结果为: 0.0999999999 [预期结果] 1.结果应为: 0.1 [测试步骤] 1.进入计算器 2.输入1000-999.9,查看结果是否为: 0.1 [测试结果] 1.结果显示为: 0.10000000 [预期结果] 1.计算结果小数点后多余的零应该省略. 二.解决方案:path: <span sty

Mac OS X 10.10安装PyQt流程1.0

装PyQt需要三个包:Qt.SIP.PyQt Qt包在http://www.qt.io/download下载,我下的是5.4.0免费版.(注:目前先不要下最新的Qt 5.5.0,虽然这个版本适配Mac OS X 10.10retina屏,但是目前貌似还没有配上它的PyQt包,我刚开始下的Qt 5.5.0结果因为license的原因装不上) sip包和PyQt都在http://www.riverbankcomputing.com下载,我下的都是最新的开发版,分别是sip4.16.8.PyQt-gp

Pyqt QTabWidget 简单的计算器集合

今天我们简单介绍下QTabWidget,然后在加入Demo计算器 首先我先讲下文件的结构: 文件分四部分, 一部分是Ui设计文件, 一部分是由Ui生成的py文件, 一部分是 计算器的逻辑文件,  最后一部分是通过QTabWidget 将逻辑部分整合在一起的文件 第一部分Ui: 我们总共有三个demo计算器,有两个需要Ui,另外一个直接把设计和逻辑写在了一个页面上 calc1.ui: 1 <?xml version="1.0" encoding="UTF-8"?

pyqt练习x5

# -*- coding: cp936 -*- import sys from PyQt4 import QtGui,QtCore class MainWindow(QtGui.QMainWindow): def __init__(self,parent=None): QtGui.QMainWindow.__init__(self,parent) self.setWindowTitle(u'菜单栏') self.resize(250,150) exit=QtGui.QAction(QtGui.Q

pyqt练习x5.12之tabliwdget表头属性修改

# -*- coding: utf-8 -*-__author__ = 'Administrator'import sysfrom PyQt4 import QtGui class MyWindow(QtGui.QWidget):    def __init__(self, parent=None):        super(MyWindow, self).__init__(parent) self.table = QtGui.QTableWidget(5,5)        self.tab

2016/7/6 准&#183;高精度计算器-加

使用函数库: #include<stdio.h>#include<string.h>#include<stdlib.h> 源码(加法): #include<stdio.h>#include<string.h>#include<stdlib.h>int main(void){ char s1[100],s2[100],s3[100],s4[100],s5[100],s6[100]; //由于是分总程序,请忽略多余 long n=-1,n

Java简单计算器

import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.s

用弦截法求一元三次方程的根x^3-5x^2+16x-80=0 ;带注释!

//用弦截法求一元三次方程的根x^3-5x^2+16x-80=0 #include<stdio.h>#include<math.h> float f(float x) //定义子函数f(x) = x^3-5x^2+16x-80,当f(x) →0时,则x即为所求的实数根:  {     float y;     y=((x-5.0)*x+16.0)*x-80.0;     return(y);          //返回f(x)的值  }    float xpoint( float

Java实例---计算器实例

1.计算器上的键的显示名字 1.0 继承JFrame类 public class Calculate extends JFrame { } 1.1定义常量 /** 计算器上的键的显示名字 */ public final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6", &quo