2013-07-01 108 views

回答

2

您將需要遍歷groupbox中的所有單選按鈕,並檢查每個無線電框的屬性isChecked()

例如:

radio1 = QtGui.QRadioButton("button 1") 
radio2 = QtGui.QRadioButton("button 2") 
radio3 = QtGui.QRadioButton("button 3") 

for i in range(1,4): 
    buttonname = "radio" + str(i) 
    if buttonname.isChecked(): 
     print buttonname + "is Checked" 

參考,檢查http://pyqt.sourceforge.net/Docs/PyQt4/qradiobutton.html

+0

偉大的解決方案。但是如果我不知道有多少個單選按鈕,我該如何改變? –

+0

在從0到大數的迭代中使用try和catch,當你得到複選框時你應該打破循環,如果複選框不存在,你應該捕獲異常。 – scottydelta

5

的另一種方法是使用按鈕組。例如:

import sys 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 

class MoodExample(QGroupBox): 

    def __init__(self): 
     super(MoodExample, self).__init__() 

     # Create an array of radio buttons 
     moods = [QRadioButton("Happy"), QRadioButton("Sad"), QRadioButton("Angry")] 

     # Set a radio button to be checked by default 
     moods[0].setChecked(True) 

     # Radio buttons usually are in a vertical layout 
     button_layout = QVBoxLayout() 

     # Create a button group for radio buttons 
     self.mood_button_group = QButtonGroup() 

     for i in xrange(len(moods)): 
      # Add each radio button to the button layout 
      button_layout.addWidget(moods[i]) 
      # Add each radio button to the button group & give it an ID of i 
      self.mood_button_group.addButton(moods[i], i) 
      # Connect each radio button to a method to run when it's clicked 
      self.connect(moods[i], SIGNAL("clicked()"), self.radio_button_clicked) 

     # Set the layout of the group box to the button layout 
     self.setLayout(button_layout) 

    #Print out the ID & text of the checked radio button 
    def radio_button_clicked(self): 
     print(self.mood_button_group.checkedId()) 
     print(self.mood_button_group.checkedButton().text()) 

app = QApplication(sys.argv) 
mood_example = MoodExample() 
mood_example.show() 
sys.exit(app.exec_()) 

我發現了更多的信息請訪問:

http://codeprogress.com/python/libraries/pyqt/showPyQTExample.php?index=387&key=QButtonGroupClick

http://www.pythonschool.net/pyqt/radio-button-widget/

1
def izle(self): 
     radios=["radio1","radio2","radio3","radio4"] 

     for i in range(0,4): 
      selected_radio = self.ui.findChild(QtGui.QRadioButton, self.radios[i]) 
      if selected_radio.isChecked(): 
       print selected_radio.objectName() + "is Checked" 
2

我設法利用指數和環的組合來解決此問題。

indexOfChecked = [self.ButtonGroup.buttons()[x].isChecked() for x in range(len(self.ButtonGroup.buttons()))].index(True) 
+0

爲什麼不簡單:'self.ButtonGroup.checkedId()'? – ekhumoro

+0

不知何故,當我有多個按鈕組的時候,它不適用於我。我一直得到如-4,-3等條目:( – Oxymoron88

+0

這隻會發生,如果你沒有設置一個ID添加按鈕時,所以添加他們是這樣的:'self.ButtonGroup.addButton(button,index)' 。 – ekhumoro

相關問題