修改樣式
2024年5月9日大约 1 分鐘
上面按鈕的樣式設定,是在 QtDesigner 中各別設定。如果仔細觀察,會發現 ICRT 的高度比較小一點點,這是因為英文字形與中文字形高度不一的緣故。我們可以在將每個按鈕的 minimumSize 及 maximumSize 的高度都設成一樣的值,例如 36,這樣的話,每個按鈕的高度就會一致了。
另外,我們也可以在程式中進行樣式的設定。以下我們修改主程式,並加入設定按鈕樣式的程式碼:
在
__init__
中修改按鍵的事件連接函數,並加上按鍵的樣式設定函數:self.bICRT.clicked.connect(lambda: self.setFreq(100.7, self.bICRT)) self.bFengCheng.clicked.connect(lambda: self.setFreq(98.7, self.bFengCheng)) self.bGuoJi.clicked.connect(lambda: self.setFreq(101.1, self.bGuoJi)) self.setButtonsStyle()
在類別中新增以下方法:
def setButtonsStyle(self): for button in [self.bICRT, self.bFengCheng, self.bGuoJi, self.bClose]: self.setButtonInActive(button) def setButtonActive(self, button): button.setStyleSheet(""" QPushButton { background-color: orange; color: black; border: none; padding: 10px; border-radius: 12px; } QPushButton:hover { background-color: red; } """) def setButtonInActive(self, button): button.setStyleSheet(""" QPushButton { background-color: #64B5F6; color: white; border: none; padding: 10px; border-radius: 12px; } QPushButton:hover { background-color: red; } """)
然後修改 setFreq 方法,新增一個參數,並加上設定樣式的程式碼:
def setFreq(self, freq, button): self.grc.analog_sig_source_x_0.set_frequency(100e6-freq*1e6) for but in [self.bICRT, self.bFengCheng, self.bGuoJi]: if but == button: self.setButtonActive(but) else: self.setButtonInActive(but)
最後執行結果如下圖所示:
練習 4
依上述說明,設計一個自己喜歡的電台接收器。