這兩天看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(撤銷一位數)和清除緩存(刪除計算曆史記錄)也是可用的,大功告成。明天繼續看看能不能做出來些別的小程序。
下班嘍~~~~~~~~~~~~~~~~~~~~~~~~~~~