欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pyqt實現(xiàn)簡易計算器功能

 更新時間:2022年05月06日 11:23:00   作者:CTGctgct  
這篇文章主要為大家詳細介紹了Pyqt實現(xiàn)簡易計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Pyqt實現(xiàn)簡易計算器的具體代碼,供大家參考,具體內(nèi)容如下

環(huán)境:pycharm、python3.7

首先用qtDesigner設計出如下界面。

再用pyUIC將.ui文件轉(zhuǎn)化內(nèi).py文件。源碼如下

# -*- coding: utf-8 -*-
?
# Form implementation generated from reading ui file 'calculator.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
?
from PyQt5 import QtCore, QtGui, QtWidgets
?
class Ui_MainWindow(object):
? ? def setupUi(self, MainWindow):
? ? ? ? MainWindow.setObjectName("MainWindow")
? ? ? ? MainWindow.resize(726, 592)
? ? ? ? self.centralwidget = QtWidgets.QWidget(MainWindow)
? ? ? ? self.centralwidget.setObjectName("centralwidget")
? ? ? ? self.outLine = QtWidgets.QLineEdit(self.centralwidget)
? ? ? ? self.outLine.setGeometry(QtCore.QRect(180, 50, 351, 41))
? ? ? ? self.outLine.setObjectName("outLine")
? ? ? ? self.bt1 = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.bt1.setGeometry(QtCore.QRect(190, 110, 61, 61))
? ? ? ? self.bt1.setObjectName("bt1")
? ? ? ? self.bt2 = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.bt2.setGeometry(QtCore.QRect(270, 110, 61, 61))
? ? ? ? self.bt2.setObjectName("bt2")
? ? ? ? self.bt3 = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.bt3.setGeometry(QtCore.QRect(360, 110, 61, 61))
? ? ? ? self.bt3.setObjectName("bt3")
? ? ? ? self.btPlus = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.btPlus.setGeometry(QtCore.QRect(450, 110, 61, 61))
? ? ? ? self.btPlus.setObjectName("btPlus")
? ? ? ? self.bt6 = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.bt6.setGeometry(QtCore.QRect(360, 190, 61, 61))
? ? ? ? self.bt6.setObjectName("bt6")
? ? ? ? self.bt5 = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.bt5.setGeometry(QtCore.QRect(270, 190, 61, 61))
? ? ? ? self.bt5.setObjectName("bt5")
? ? ? ? self.btSub = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.btSub.setGeometry(QtCore.QRect(450, 190, 61, 61))
? ? ? ? self.btSub.setObjectName("btSub")
? ? ? ? self.bt4 = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.bt4.setGeometry(QtCore.QRect(190, 190, 61, 61))
? ? ? ? self.bt4.setObjectName("bt4")
? ? ? ? self.bt9 = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.bt9.setGeometry(QtCore.QRect(360, 270, 61, 61))
? ? ? ? self.bt9.setObjectName("bt9")
? ? ? ? self.bt8 = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.bt8.setGeometry(QtCore.QRect(270, 270, 61, 61))
? ? ? ? self.bt8.setObjectName("bt8")
? ? ? ? self.btMul = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.btMul.setGeometry(QtCore.QRect(450, 270, 61, 61))
? ? ? ? self.btMul.setObjectName("btMul")
? ? ? ? self.bt7 = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.bt7.setGeometry(QtCore.QRect(190, 270, 61, 61))
? ? ? ? self.bt7.setObjectName("bt7")
? ? ? ? self.btCal = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.btCal.setGeometry(QtCore.QRect(360, 340, 61, 61))
? ? ? ? self.btCal.setObjectName("btCal")
? ? ? ? self.bt0 = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.bt0.setGeometry(QtCore.QRect(270, 340, 61, 61))
? ? ? ? self.bt0.setObjectName("bt0")
? ? ? ? self.btDiv = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.btDiv.setGeometry(QtCore.QRect(450, 340, 61, 61))
? ? ? ? self.btDiv.setObjectName("btDiv")
? ? ? ? self.btClr = QtWidgets.QPushButton(self.centralwidget)
? ? ? ? self.btClr.setGeometry(QtCore.QRect(190, 340, 61, 61))
? ? ? ? self.btClr.setObjectName("btClr")
? ? ? ? MainWindow.setCentralWidget(self.centralwidget)
? ? ? ? self.menubar = QtWidgets.QMenuBar(MainWindow)
? ? ? ? self.menubar.setGeometry(QtCore.QRect(0, 0, 726, 26))
? ? ? ? self.menubar.setObjectName("menubar")
? ? ? ? MainWindow.setMenuBar(self.menubar)
? ? ? ? self.statusbar = QtWidgets.QStatusBar(MainWindow)
? ? ? ? self.statusbar.setObjectName("statusbar")
? ? ? ? MainWindow.setStatusBar(self.statusbar)
?
? ? ? ? self.retranslateUi(MainWindow)
? ? ? ? QtCore.QMetaObject.connectSlotsByName(MainWindow)
?
? ? def retranslateUi(self, MainWindow):
? ? ? ? _translate = QtCore.QCoreApplication.translate
? ? ? ? MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
? ? ? ? self.bt1.setText(_translate("MainWindow", "1"))
? ? ? ? self.bt2.setText(_translate("MainWindow", "2"))
? ? ? ? self.bt3.setText(_translate("MainWindow", "3"))
? ? ? ? self.btPlus.setText(_translate("MainWindow", "+"))
? ? ? ? self.bt6.setText(_translate("MainWindow", "6"))
? ? ? ? self.bt5.setText(_translate("MainWindow", "5"))
? ? ? ? self.btSub.setText(_translate("MainWindow", "-"))
? ? ? ? self.bt4.setText(_translate("MainWindow", "4"))
? ? ? ? self.bt9.setText(_translate("MainWindow", "9"))
? ? ? ? self.bt8.setText(_translate("MainWindow", "8"))
? ? ? ? self.btMul.setText(_translate("MainWindow", "*"))
? ? ? ? self.bt7.setText(_translate("MainWindow", "7"))
? ? ? ? self.btCal.setText(_translate("MainWindow", "="))
? ? ? ? self.bt0.setText(_translate("MainWindow", "0"))
? ? ? ? self.btDiv.setText(_translate("MainWindow", "/"))
? ? ? ? self.btClr.setText(_translate("MainWindow", "clear"))

在新建一個py文件引入剛才pyUIC生成的ui文件。寫入相關代碼,源碼如下:

# -*- coding: utf-8 -*-
# @Author:ct
# @ProjectName:calculator.py
# @Desc:
# @Time:
import sys
from calculatorUI import Ui_MainWindow
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
?
?
class mWindow(QMainWindow, Ui_MainWindow):
? ? def __init__(self):
? ? ? ? super(mWindow, self).__init__()
? ? ? ? self.setupUi(self)
?
? ? # 定義所有按鈕事件函數(shù)
? ? def prs_bt0(self):
? ? ? ? self.outLine.insert('0')
?
? ? def prs_bt1(self):
? ? ? ? self.outLine.insert('1')
?
? ? def prs_bt2(self):
? ? ? ? self.outLine.insert('2')
?
? ? def prs_bt3(self):
? ? ? ? self.outLine.insert('3')
?
? ? def prs_bt4(self):
? ? ? ? self.outLine.insert('4')
?
? ? def prs_bt5(self):
? ? ? ? self.outLine.insert('5')
?
? ? def prs_bt6(self):
? ? ? ? self.outLine.insert('6')
?
? ? def prs_bt7(self):
? ? ? ? self.outLine.insert('7')
?
? ? def prs_bt8(self):
? ? ? ? self.outLine.insert('8')
?
? ? def prs_bt9(self):
? ? ? ? self.outLine.insert('9')
?
? ? def prs_btPlus(self):
? ? ? ? self.outLine.insert('+')
?
? ? def prs_btSub(self):
? ? ? ? self.outLine.insert('-')
?
? ? def prs_btMul(self):
? ? ? ? self.outLine.insert('*')
?
? ? def prs_btDiv(self):
? ? ? ? self.outLine.insert('/')
?
? ? def prs_btClr(self):
? ? ? ? self.outLine.clear()
?
? ? # 計算表達式事件,通過eval函數(shù)將字符串表達式計算
? ? def prs_btCal(self):
? ? ? ? # 獲得輸入框的內(nèi)容(字符串形式)
? ? ? ? exp = self.outLine.text()
? ? ? ? res = eval(exp)
? ? ? ? self.outLine.insert('=')
? ? ? ? self.outLine.insert(str(res))
?
?
if __name__ == '__main__':
? ? app = QApplication(sys.argv)
? ? mainWindow = mWindow()
? ? # mainWindow.outLine.setEnabled(False)
? ? # 使輸出框只能被讀取,不能輸入內(nèi)容
? ? mainWindow.outLine.setReadOnly(True)
? ? # 關聯(lián)所有按鈕事件
? ? mainWindow.bt0.clicked.connect(mainWindow.prs_bt0)
? ? mainWindow.bt1.clicked.connect(mainWindow.prs_bt1)
? ? mainWindow.bt2.clicked.connect(mainWindow.prs_bt2)
? ? mainWindow.bt3.clicked.connect(mainWindow.prs_bt3)
? ? mainWindow.bt4.clicked.connect(mainWindow.prs_bt4)
? ? mainWindow.bt5.clicked.connect(mainWindow.prs_bt5)
? ? mainWindow.bt6.clicked.connect(mainWindow.prs_bt6)
? ? mainWindow.bt7.clicked.connect(mainWindow.prs_bt7)
? ? mainWindow.bt8.clicked.connect(mainWindow.prs_bt8)
? ? mainWindow.bt9.clicked.connect(mainWindow.prs_bt9)
? ? mainWindow.btPlus.clicked.connect(mainWindow.prs_btPlus)
? ? mainWindow.btDiv.clicked.connect(mainWindow.prs_btDiv)
? ? mainWindow.btMul.clicked.connect(mainWindow.prs_btMul)
? ? mainWindow.btSub.clicked.connect(mainWindow.prs_btSub)
? ? mainWindow.btCal.clicked.connect(mainWindow.prs_btCal)
? ? mainWindow.btClr.clicked.connect(mainWindow.prs_btClr)
?
? ? mainWindow.show()
? ? # 讓程序循環(huán)運行
? ? sys.exit(app.exec_())

運行程序,結(jié)果如下:

可進行簡單的運算。當然還有諸多bug,如輸入錯誤表達式不能容錯等,待以后修復。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python3射線法判斷點是否在多邊形內(nèi)

    python3射線法判斷點是否在多邊形內(nèi)

    這篇文章主要為大家詳細介紹了python3射線法判斷點是否在多邊形內(nèi),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python防止程序超時的實現(xiàn)示例

    python防止程序超時的實現(xiàn)示例

    因為某個需求,需要在程序運行的時候防止超時,本文主要介紹了python防止程序超時的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Python獲取文本文件行數(shù)的三種常用方法

    Python獲取文本文件行數(shù)的三種常用方法

    在Python中獲取文件中的行數(shù)可以幫助我們更好地處理和分析數(shù)據(jù),這篇文章主要給大家介紹了關于Python獲取文本文件行數(shù)的三種常用方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • pyqt5主窗口按鍵彈出子窗口的實現(xiàn)

    pyqt5主窗口按鍵彈出子窗口的實現(xiàn)

    本文主要介紹了pyqt5主窗口按鍵彈出子窗口的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python標準庫defaultdict模塊使用示例

    Python標準庫defaultdict模塊使用示例

    這篇文章主要介紹了Python標準庫defaultdict模塊使用示例,本文講解了如何使用defaultdict給字典value元素添加默認類型以及defaultdict的兩個使用小案例,需要的朋友可以參考下
    2015-04-04
  • 如何利用python和DOS獲取wifi密碼

    如何利用python和DOS獲取wifi密碼

    這篇文章主要介紹了如何利用python和DOS獲取wifi密碼,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • python使用any判斷一個對象是否為空的方法

    python使用any判斷一個對象是否為空的方法

    這篇文章主要介紹了python使用any判斷一個對象是否為空的方法,并給出了改進的方法供大家對比參考,具有一定的借鑒價值,需要的朋友可以參考下
    2014-11-11
  • Python實現(xiàn)的遠程登錄windows系統(tǒng)功能示例

    Python實現(xiàn)的遠程登錄windows系統(tǒng)功能示例

    這篇文章主要介紹了Python實現(xiàn)的遠程登錄windows系統(tǒng)功能,結(jié)合實例形式分析了Python基于wmi模塊的遠程連接與進程操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2018-06-06
  • python 如何引入?yún)f(xié)程和原理分析

    python 如何引入?yún)f(xié)程和原理分析

    這篇文章主要介紹了python 如何引入?yún)f(xié)程和原理分析,幫助大家更好得理解和學習python,感興趣的朋友可以了解下
    2020-11-11
  • Python探索之pLSA實現(xiàn)代碼

    Python探索之pLSA實現(xiàn)代碼

    偶然看到了pLSA模型這個東東,不懂,于是找了找資料,這里分享給大家一段代碼,幫助理解吧。不好的地方還請多多指教。
    2017-10-10

最新評論