Python PyQt5實現(xiàn)的簡易計算器功能示例
本文實例講述了Python PyQt5實現(xiàn)的簡易計算器功能。分享給大家供大家參考,具體如下:
這里剩下計算函數(shù)(self.calculator)未實現(xiàn),有興趣的朋友可以實現(xiàn)它
【知識點】
1、利用循環(huán)添加按鈕部件,及給每個按鈕設(shè)置信號/槽
2、給按鈕設(shè)置固定大?。?code>button.setFixedSize(QtCore.QSize(60,30))
3、取事件的的發(fā)送者(此例為各個按鈕)的文本: self.sender().text()
【效果圖】

【源代碼】
import sys
from PyQt5 import QtWidgets,QtCore,QtGui
class Example(QtWidgets.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
self.reset()
def initUI(self):
self.setWindowTitle('簡易計算器')
grid = QtWidgets.QGridLayout()
self.display = QtWidgets.QLineEdit('0')
self.display.setFont(QtGui.QFont("Times", 20))
self.display.setReadOnly(True)
self.display.setAlignment(QtCore.Qt.AlignRight)
self.display.setMaxLength(15)
grid.addWidget(self.display,0,0,1,4)
names = ['Clear', 'Back', '', 'Close',
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+']
pos = [(0, 0), (0, 1), (0, 2), (0, 3),
(1, 0), (1, 1), (1, 2), (1, 3),
(2, 0), (2, 1), (2, 2), (2, 3),
(3, 0), (3, 1), (3, 2), (3, 3 ),
(4, 0), (4, 1), (4, 2), (4, 3)]
c = 0
for name in names:
button = QtWidgets.QPushButton(name)
button.setFixedSize(QtCore.QSize(60,30))
button.clicked.connect(self.buttonClicked) # 給每個按鈕設(shè)置信號/槽
if c == 2:
pass
#grid.addWidget(QtWidgets.QLabel(''), 0, 2) #替換 第三個按鈕 為 文本標簽!
else:
grid.addWidget(button, pos[c][0]+1, pos[c][1])
c = c + 1
self.setLayout(grid)
def buttonClicked(self):
#sender = self.sender(); # 確定信號發(fā)送者
#self.display.setText(sender.text())
text = self.sender().text()
if text in '+-*/':
self.history.append(self.number) # 數(shù)字入棧
self.history.append(text) # 運算符入棧
self.operator = text # 設(shè)置當前運算符
self.number = "" # 數(shù)字清空
self.numberType = "int"
return
elif text == "=":
self.calculate() # 計算
elif text == "Back":
pass
elif text == "Clear":
self.reset()
elif text == "Close":
self.close()
elif text == ".":
if self.numberType == "int":
self.number += text
self.numberType = "float"
else:
self.number = self.number + text if self.number != "0" else text
self.display.setText(self.number)
def calculate(self):
pass
def reset(self):
self.number = "0"
self.result = 0
self.history = []
self.operator = '' # +,-,*,/
self.numberType = 'int' # int與float兩種,如果輸入了小數(shù)點則為實數(shù)
app = QtWidgets.QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
PS:這里再為大家推薦幾款計算工具供大家進一步參考借鑒:
在線一元函數(shù)(方程)求解計算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi
科學(xué)計算器在線使用_高級計算器在線計算:
http://tools.jb51.net/jisuanqi/jsqkexue
在線計算器_標準計算器:
http://tools.jb51.net/jisuanqi/jsq
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)學(xué)運算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
Python爬取門戶論壇評論淺談Python未來發(fā)展方向
這篇文章主要介紹了如何實現(xiàn)Python爬取門戶論壇評論,附含圖片示例代碼,講解了詳細的操作過程,有需要的的朋友可以借鑒參考下,希望可以有所幫助2021-09-09
淺談Pandas dataframe數(shù)據(jù)處理方法的速度比較
這篇文章主要介紹了淺談Pandas dataframe數(shù)據(jù)處理方法的速度比較,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
Python函數(shù)的參數(shù)常見分類與用法實例詳解
這篇文章主要介紹了Python函數(shù)的參數(shù)常見分類與用法,結(jié)合實例形式較為詳細的分析了Python函數(shù)的形參、實參、默認參數(shù)、可變參數(shù)等概念、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2019-03-03
Python數(shù)據(jù)分析之雙色球中藍紅球分析統(tǒng)計示例
這篇文章主要介紹了Python數(shù)據(jù)分析之雙色球中藍紅球分析統(tǒng)計,結(jié)合實例形式較為詳細的分析了Python針對雙色球藍紅球中獎數(shù)據(jù)分析的相關(guān)操作技巧,需要的朋友可以參考下2018-02-02
使用Python將xmind腦圖轉(zhuǎn)成excel用例的實現(xiàn)代碼(一)
這篇文章主要介紹了使用Python將xmind腦圖轉(zhuǎn)成excel用例的實現(xiàn)代碼(一),本文給大家介紹的非常詳細對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10

