PyQt5 简易计算器

简介: 剩下计算函数(self.calculator)未实现,有兴趣的朋友可以实现它   【知识点】 1、利用循环添加按钮部件,及给每个按钮设置信号/槽 2、给按钮设置固定大小:button.setFixedSize(QtCore.

剩下计算函数(self.calculator)未实现,有兴趣的朋友可以实现它

 

【知识点】

1、利用循环添加按钮部件,及给每个按钮设置信号/槽

2、给按钮设置固定大小:button.setFixedSize(QtCore.QSize(60,30))

3、取事件的的发送者(此例为各个按钮)的文本: self.sender().text()

 

【效果图】

 

【源代码】

 1 import sys
 2 from PyQt5 import QtWidgets,QtCore,QtGui
 3 
 4 
 5 class Example(QtWidgets.QWidget):
 6 
 7     def __init__(self):
 8         super(Example, self).__init__()
 9         self.initUI()
10         
11         self.reset()
12 
13     def initUI(self):
14         self.setWindowTitle('简易计算器')
15         grid = QtWidgets.QGridLayout()
16         
17         self.display = QtWidgets.QLineEdit('0')
18         self.display.setFont(QtGui.QFont("Times", 20))
19         self.display.setReadOnly(True)
20         self.display.setAlignment(QtCore.Qt.AlignRight)
21         self.display.setMaxLength(15)
22         grid.addWidget(self.display,0,0,1,4)
23 
24         names = ['Clear', 'Back', '', 'Close', 
25                 '7', '8', '9', '/',
26                 '4', '5', '6', '*', 
27                 '1', '2', '3', '-',
28                 '0', '.', '=', '+']
29         pos = [(0, 0), (0, 1), (0, 2), (0, 3),
30                 (1, 0), (1, 1), (1, 2), (1, 3),
31                 (2, 0), (2, 1), (2, 2), (2, 3),
32                 (3, 0), (3, 1), (3, 2), (3, 3 ),
33                 (4, 0), (4, 1), (4, 2), (4, 3)]
34         c = 0
35         for name in names:
36             button = QtWidgets.QPushButton(name)
37             button.setFixedSize(QtCore.QSize(60,30))
38             button.clicked.connect(self.buttonClicked) # 给每个按钮设置信号/槽
39             if c == 2:
40                 pass
41                 #grid.addWidget(QtWidgets.QLabel(''), 0, 2) #替换 第三个按钮 为 文本标签!
42             else: 
43                 grid.addWidget(button, pos[c][0]+1, pos[c][1])
44             c = c + 1
45         
46         self.setLayout(grid)
47         
48         
49         
50         
51     def buttonClicked(self): 
52         #sender = self.sender();  # 确定信号发送者
53         #self.display.setText(sender.text())
54         text = self.sender().text()
55         if text in '+-*/':
56             self.history.append(self.number) # 数字入栈
57             self.history.append(text) # 运算符入栈
58             self.operator = text # 设置当前运算符
59             self.number = "" # 数字清空
60             self.numberType = "int"
61             return
62         elif text == "=":
63             self.calculate() # 计算
64         elif text == "Back":
65             pass
66         elif text == "Clear":
67             self.reset()
68         elif text == "Close":
69             self.close()
70         elif text == ".":
71             if self.numberType == "int":
72                 self.number += text
73                 self.numberType = "float"
74         else:
75             self.number = self.number + text if self.number != "0" else text
76 
77         self.display.setText(self.number)
78         
79     def calculate(self):
80         pass
81         
82     def reset(self):
83         self.number = "0"
84         self.result = 0
85         self.history = []
86         self.operator = '' # +,-,*,/
87         self.numberType = 'int' # int与float两种,如果输入了小数点则为实数
88 
89 app = QtWidgets.QApplication(sys.argv)
90 ex = Example()
91 ex.show()
92 sys.exit(app.exec_())

 

目录
相关文章
|
7月前
|
C++
基于Qt的简易计算器设计与实现
基于Qt的简易计算器设计与实现
410 0
|
7月前
|
开发框架 开发者 Python
探索Python GUI编程:从Tkinter到PyQt的全方位使用
在当今技术发展日新月异的时代,Python作为一种简洁高效的编程语言,拥有广泛的应用领域。其中,GUI(图形用户界面)编程是Python开发者经常涉足的领域之一。本文将介绍两个常用的Python GUI库——Tkinter和PyQt,并深入探讨其使用方法、特点以及适用场景,帮助读者全面了解Python GUI编程的魅力。
111 0
|
5月前
|
安全 Python
|
6月前
|
计算机视觉 Python
python实现GUI遇到的问题
python实现GUI遇到的问题
|
前端开发 数据可视化 搜索推荐
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
510 1
|
程序员 Python
Python Qt GUI设计:5种事件处理机制(提升篇—3)
之前在Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)中,我们已经简单讲到,PyQt为事件处理提供了两种机制:高级的信号与槽机制以及低级的事件处理程序,本篇博文将系统讲解Qt的事件处理机类和制。
Vs + Qt 界面设计常用函数合集
Vs + Qt 界面设计常用函数合集
|
数据可视化 测试技术 Python
软件测试|超好用超简单的Python GUI库——tkinter(十六)
软件测试|超好用超简单的Python GUI库——tkinter(十六)
|
Python
Python高级进阶教程022期 pyqt5 qtimer实现图片轮播
Python高级进阶教程022期 pyqt5 qtimer实现图片轮播
246 0
|
存储 算法 前端开发
Python使用tkinter模块实现推箱子游戏
前段时间用C语言做了个字符版的推箱子,着实是比较简陋。正好最近用到了Python,然后想着用Python做一个图形界面的推箱子。这回可没有C那么简单,首先Python的图形界面我是没怎么用过,在网上找了一大堆教材,最后选择了tkinter,没什么特别的原因,只是因为网上说的多。
216 0