python使用pyqt5製作計算器

這兩天看pyqt5了,這個模塊可以用來製作桌面軟件,自己試着做了個計算器,這裏記錄一下。

安裝:
pip install PyQt5

安裝完成繼續安裝PyQt5-tools
pip install PyQt5-tools

然後配置pycharm
點擊:File -》Settings-》Tools -》 External Tools -》點擊“+”號
在這裏插入圖片描述
我的配置過了,所以下面顯示的有Qt Desi…和pyuic,你配置好之後也會有的。
先設置這三個地方
1,Name:Qt Designer

ps:你自己的designer.exe路徑,
2,Programs:D:\ProgramData\Anaconda3\envs\py35\Scripts\designer.exe

ps:$符和ProjectFileDir之間不要有空格,你複製我的可能會有,注意下
3,Working directory: $ ProjectFileDir$
在這裏插入圖片描述
再設置PyUIC,
1,Name:PyUIC

ps:你的python路徑
2,Programs:D:\ProgramData\Anaconda3\envs\py35\python.exe

ps:3和4,還是那就話,$符和它包裹的英文字符之間儘量別有空格,我打了空格的,因爲不打空格,博客顯示不出來
3,Parameters:-m PyQt5.uic.pyuic $ FileName $ -o $ FileNameWithoutExtension $ .py

4,Working directory:$ FileDir $

這段看的不太明白的話可以去網上搜別人的教程,很多的
在這裏插入圖片描述
完成上面的步驟以後,點擊 Tools -》External Tools -》Qt Designer 啓動我們的Qt Designer
在這裏插入圖片描述
啓動後選擇:main window,建立空白的窗口,點擊 Create
在這裏插入圖片描述
進入之後就是這樣的
在這裏插入圖片描述
然後先拖拽16個push button上來,然後雙擊它就可以編輯輸入了
在這裏插入圖片描述
稍微排列就好,大概對其,框與框之間別重疊
然後我們全選這些按鈕,就是按住鼠標左鍵範圍選中知道吧,選中之後更改他們的寬高,我四個全寫的60
在這裏插入圖片描述
再拉兩個push button出來,單擊ce,改變最大寬高分別60和180。
清除緩存的寬高還是四個60
在這裏插入圖片描述
然後再次全選,右鍵,lay out>lay out in a grid
在這裏插入圖片描述
可以上下拉大些
在這裏插入圖片描述
在這裏插入圖片描述
然後再把這倆拖上去
在這裏插入圖片描述
在這裏插入圖片描述
右鍵空白處,選擇lay out>lay out vertically
在這裏插入圖片描述
選中第二個框,改變這倆地方
在這裏插入圖片描述
看下圖,選中這個spacer放到顯示框和數字框之間
在這裏插入圖片描述
選中它,改這三個地方
在這裏插入圖片描述
再拉一個spacer扔到最頂端,目的與邊框保持距離。選中第二個spacer,跟第一個spacer的一樣,改那
在這裏插入圖片描述
此時界面就做好了,點擊,保存
在這裏插入圖片描述
此時,你保存的文件夾裏就會有個ui的文件
在這裏插入圖片描述
選中它,右鍵,選擇pyuic轉成python文件
在這裏插入圖片描述
此時文件夾下多了一個py文件
在這裏插入圖片描述
此時在該文件夾下新建一個run.py文件

# -*- coding: utf-8 -*-
# @Author   : LiMengDi
# @FILE     : run.py.py
# @Time     : 2019/11/27 18:08
# @Software : PyCharm
# -*- coding: utf-8 -*-
# @Author   : LiMengDi
# @FILE     : run.py
# @Time     : 2019/11/27 10:37
# @Software : PyCharm
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
from untitled import Ui_MainWindow


class mywindow(QWidget, Ui_MainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.setupUi(self)

    #下面是定義界面點擊某鍵時候執行何種操作
    def backspace(self):
        self.lineEdit.backspace()


    def ps_bt(self):
        self.lineEdit.insert('1')

    def ps_bt2(self):
        self.lineEdit.insert('2')

    def ps_bt3(self):
        self.lineEdit.insert('3')

    def ps_bt4(self):
        self.lineEdit.insert('4')

    def ps_bt5(self):
        self.lineEdit.insert('5')


    def ps_bt6(self):
        self.lineEdit.insert('6')

    def ps_bt7(self):
        self.lineEdit.insert('7')

    def ps_bt8(self):
        self.lineEdit.insert('8')

    def ps_bt9(self):
        self.lineEdit.insert('9')

    def ps_bt10(self):
        self.lineEdit.insert('0')

    def ps_bt11(self):
        self.lineEdit.insert('+')

    def ps_bt12(self):
        self.lineEdit.insert('-')

    def ps_bt13(self):
        self.lineEdit.insert('*')

    def ps_bt14(self):
        self.lineEdit.insert('/')

    def ps_bt15(self):
        self.lineEdit.insert('.')

    def ps_bt16(self):
        self.lineEdit.insert('=')
        self.calculate()

    def lineEdit_clear(self):
        self.lineEdit.clear()

    def calculate(self):
        text = self.lineEdit.text()
        self.textBrowser.append('%s= %.2f' % (text, eval(text)))
        self.lineEdit_clear()

    def clear_all(self):
        self.textBrowser.clear()



if __name__ == '__main__':

    app = QApplication(sys.argv)
    w = mywindow()
    #撤銷
    #這句話的意思是,當點擊pushButton_17的時候,執行我們上面定義的backspace方法,
    #pushButton_17在untitled.py文件裏對應的是ce這個鍵
    #所以,這句話的意思就是說當點擊ce鍵的時候,執行backspace這個方法裏的操作,也就是刪除一個字符
    w.pushButton_17.clicked.connect(w.backspace)
    #1-0
    w.pushButton.clicked.connect(w.ps_bt)
    w.pushButton_2.clicked.connect(w.ps_bt2)
    w.pushButton_9.clicked.connect(w.ps_bt3)
    w.pushButton_10.clicked.connect(w.ps_bt4)
    w.pushButton_7.clicked.connect(w.ps_bt5)
    w.pushButton_4.clicked.connect(w.ps_bt6)
    w.pushButton_3.clicked.connect(w.ps_bt7)
    w.pushButton_11.clicked.connect(w.ps_bt8)
    w.pushButton_12.clicked.connect(w.ps_bt9)
    w.pushButton_6.clicked.connect(w.ps_bt10)
    #運算符
    w.pushButton_5.clicked.connect(w.ps_bt11)
    w.pushButton_8.clicked.connect(w.ps_bt12)
    w.pushButton_15.clicked.connect(w.ps_bt13)
    w.pushButton_13.clicked.connect(w.ps_bt14)
    #點
    w.pushButton_14.clicked.connect(w.ps_bt15)
    #等
    w.pushButton_16.clicked.connect(w.calculate)
    #清空緩存
    w.pushButton_18.clicked.connect(w.clear_all)
    w.show()
    sys.exit(app.exec_())

值得注意的是,untitled.py文件裏有三個地方需要註釋掉,不然會保錯

 MainWindow.setCentralWidget(self.centralwidget)
 MainWindow.setMenuBar(self.menubar)
 MainWindow.setStatusBar(self.statusbar)

在這裏插入圖片描述
最後,如果你是跟我一路做過來的,那麼我的run.py也是適合你的,你可以直接跑run.py。不行的話,微調一下按鈕和執行方法的對應關係就好了

最最後,老規矩,看下效果:
在這裏插入圖片描述
經檢測,ce(撤銷一位數)和清除緩存(刪除計算曆史記錄)也是可用的,大功告成。明天繼續看看能不能做出來些別的小程序。
下班嘍~~~~~~~~~~~~~~~~~~~~~~~~~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章