信號:
event事件的工作方法是不斷掃描是否發生事件然後做出相應,這種方式固然簡單易懂,但如果我同一時間需要多項交互,那就不是能處理的了
所以pyside6採用信號(signal),可以以解為一件事情發生會發出一個信號呼叫對應的處理器(slot)響應
基礎控件的信號:
按鍵:
class MyWindow(QWidget): def __init__(self): super().__init__() btn = QPushButton('按鈕名稱', self) btn.clicked.connect(self.btn_click) # 按鍵點擊時觸發事件 def btn_click(self): print('按鈕被點擊了')
輸入框:
獲得輸入的內容
account = self.lineEdit.text()
變量名 = self.對應輸入框的objectName.text()
對應輸入框的objectName可以在Qt Designer中找到
應用小項目:簡易計算器
首先在Qt Designer繪製一個簡易的計算器頁面,保存ui文件

轉化為py文件,靜態導入,多繼承打開

賦予按鍵數值和符號
def com(self): self.pushButton_0.clicked.connect(lambda : self.add('0')) self.pushButton_1.clicked.connect(lambda : self.add('1')) self.pushButton_2.clicked.connect(lambda : self.add('2')) self.pushButton_3.clicked.connect(lambda : self.add('3')) self.pushButton_4.clicked.connect(lambda : self.add('4')) self.pushButton_5.clicked.connect(lambda : self.add('5')) self.pushButton_6.clicked.connect(lambda : self.add('6')) self.pushButton_7.clicked.connect(lambda : self.add('7')) self.pushButton_8.clicked.connect(lambda : self.add('8')) self.pushButton_9.clicked.connect(lambda : self.add('9')) self.pushButton_jia.clicked.connect(lambda : self.add('+')) self.pushButton_jian.clicked.connect(lambda : self.add('-')) self.pushButton_cheng.clicked.connect(lambda : self.add('*')) self.pushButton_chu.clicked.connect(lambda : self.add('/')) self.pushButton_dian.clicked.connect(lambda : self.add('.')) self.pushButton_C.clicked.connect(lambda : self.clear()) self.pushButton_CE.clicked.connect(lambda : self.clearall()) self.pushButton_ent.clicked.connect(lambda : self.jisuan())
添加 add函數
def add(self, num): self.result += str(num) self.lineEdit.setText(self.result)
清除 clear函數
刪除self.result最後一個字符,實現回退功能,記得更新顯示
def clear(self): self.result = self.result[:-1] self.lineEdit.setText(self.result)
全部刪除 clearall函數
直接將self.result置為空,記得更新顯示
def clearall(self): self.result = '' self.lineEdit.setText(self.result)
計算 jisuan函數
使用eval函數計算表達式結果,由於存在回退功能,所以計算時不能更新self.result內容,所以直接更新顯示就可以,添加error防止出現錯誤,提高魯棒性
def jisuan(self): try: self.lineEdit.setText(str(eval(self.result))) except: self.lineEdit.setText('error')
就醬,一個簡易(劃掉)簡陋計算器就完成啦