2 **
不知道幹啥, 所以想起本科的時候常常使用qt-c++做上位機還有趣, 想著現在全都是用python羅列**, 能不能結合python跟qt介面做上位機或者開發介面軟體, 找了一下還真有
本文目的是為了了解qt+python結合開發介面軟體的技巧,不是為了完成計算器的演算法,所以希望讀者注重重點
搬山道人登場
吐槽一下,python的那個xx介面實在是太醜了,彷彿回到xp時代
注意這時候python包中的pyuic5.exe能夠將ui轉化為對應的py檔案類
這裡就要了解qt的知識了, qt的核心是訊號與槽, 其實就是乙個控制項被操作了點啥, 觸發了一系列的操作
pushbutton_add.pressed.connect(function) 表示按鈕被按下,啟用函式function
from pyqt5.qtgui import
*from pyqt5.qtwidgets import
*from pyqt5.qtcore import
*import operator # python內建包, 包含各類計算
from mainwindow import ui_dialog # 剛設計的ui
# calculator state.
class
mainwindow
(qmainwindow, ui_dialog)
:# 類繼承於ui
def__init__
(self,
*args,
**kwargs)
:super
(mainwindow, self)
.__init__(
*args,
**kwargs)
self.setupui(self)
# 這是初始化ui上的控制項
self.show(
)# 顯示ui, 可以在主函式中加入window.show()
# setup numbers.
for n in
range(0
,10):
# 與10個數字按鍵建立聯絡, 每次按乙個按鍵, 連線到輸入的顯示當中
getattr
(self,
'pushbutton_%s'
% n)
.pressed.connect(
lambda v=n:self.input_number(v)
)# getattr(類, 屬性值) 獲取屬性值 , 按鈕%s的屬性值按下後連線到對應的值
# # setup operations.
self.pushbutton_add.pressed.connect(
lambda
: self.operation(operator.add)
) self.pushbutton_sub.pressed.connect(
lambda
: self.operation(operator.sub)
) self.pushbutton_mul.pressed.connect(
lambda
: self.operation(operator.mul)
) self.pushbutton_div.pressed.connect(
lambda
: self.operation(operator.truediv)
)#
self.pushbutton_equ.pressed.connect(self.equals)
self.pushbutton_re.pressed.connect(self.project_init)
self.project_init(
)def
input_number
(self, v)
: self.input_numb[self.state]
= self.input_numb[self.state]*10
+v self.display(self.input_numb[self.state]
)def
display
(self, number)
: self.lcdnumber.display(number)
defproject_init
(self)
: self.state =
0# 0是第乙個值, 1是第二個值, 2是第三個值 2+596 =
self.display_number =
0# 數碼管顯示部分
self.last_operation =
none
self.current_op =
none
self.input_numb =[0
,0]# 儲存計算的兩個值
self.display(
"0")
defoperation
(self, op)
:# 輸入加減乘除
self.state =
1# 標識有計算識別符號
self.current_op = op
# self.display("0")
self.input_numb[1]
=0# 運算元2清零
defequals
(self)
: self.state =
0 self.display(self.current_op(self.input_numb[0]
, self.input_numb[1]
))self.input_numb[0]
=0self.input_numb[1]
=0pass
if __name__ ==
'__main__'
:import sys
"zjq"
) window = mainwindow(
)# window.show()
))
mainwindow類繼承了我們剛設計的ui
然後使用在主程式中例項類
初始化時將資料跟介面初始化,
當有資料輸入,儲存到input_numb第乙個空間
當有操作符輸入時, 開始將接下來輸入的資料儲存到input_numb第二個空間
當有=
輸入, 將input_numb兩個數進行計算
本文主要了解ui控制項使用, 按鈕的press方法和lcd的display方法,
其他控制項的其他方法需要閱讀qt使用手冊,不多贅述, 設計流程如上, ui的設計注重細節排版,同時qt的系統開發有很多前景,尤其是嵌入式方面的開發,當然桌面軟體其實也可勝任, 如桌面qq即可由qq設計
Linux基礎之計算器概論
1.計算器的定義 接收使用者輸入指令與資料,經由 處理器的數學與邏輯單元運算處理後,以產生或儲存成有用的資訊 2.計算機的五大單元包括 輸入單元 輸出單元 cpu內部的控制單元 算術邏輯單元與主儲存器五大 3.資料會流進 流出記憶體是cpu所發布的控制命令,而cpu實際要處理的資料則完全來自於主儲存...
GTK入門學習 布局練習之計算器
接下來,我們做乙個布局練習。例如以下圖 我們用 布局實現,布局參考座標例如以下 這裡我們用到行編輯控制項 gtkentry 行編輯的建立 gtkwidget gtk entry new void 返回值 行編輯指標行 void gtk entry set text gtkentry entry,co...
qt程式設計學習教程之計算器(一)GUI設計
乙個計算器的開發是學習gui程式設計中最常見的練習專案之一。博主作為qt初學者,深知初始入門qt之艱難,故從初學者的角度,一步一步完成計算器程式設計,望對後人有所作用。一下 截圖為程式設計步驟的拆解,文章最後附上 全文。需求 使用qt完成乙個支援浮點數運算,正負值識別的多位數加減乘除括號的四則運算計...