2013-06-12 55 views
1

我想要一個組合框啓用/禁用line_edit項目基於組合框的組合框/狀態中選擇當前選項。pyqt - 組合框項目啓用/禁用line_edit項目基於狀態

這是迄今爲止我已經得到最接近

self.combobox_widget.activated.connect(self.line_edit_widget.setDisabled) 

但是,如果在組合框中的第一個選項是需要啓用了line_edit的之一,它還會禁用line_edit這隻作品爲其他選項。

我想獲得它,這樣我可以有多個選項禁用line_edit並有多個選項啓用line_edit。

我一直在尋找http://pyqt.sourceforge.net/Docs/PyQt4/classes.html 的班級信息和方法信息,但一直沒有能夠得到任何其他工作。

我知道基本的想法是連接到組合框,監聽通過改變狀態產生的信號,然後根據與發送的信號相關聯的值將line_edit設置爲啓用或禁用。

任何幫助將不勝感激!

回答

2

創建另一個功能,並將組合框連接到它。不要使用activated,但使用currentIndexChanged,因爲如果index未更改,則不需要執行任何操作。

def comboBoxIndexChanged(index): 
    #Do something based on the index 
    if somethingBasedOnTheIndex: 
    self.line_edit_widget.setEnabled(true) 
    else: 
    self.line_edit_widget.setEnabled(false) 

它表現爲你擁有它是因爲activated信號發送QComboBox指數函數的原因。然後將其轉換爲truefalse。 Python然後將0投射到false(啓用QLineEdit),並且每個其他索引都是true

+0

謝謝,我沒有想到索引被轉換爲布爾!現在就處理您的建議更改。 –