Seite 1 von 1

PyQt radio button toggled() und isChecked Frage

Verfasst: Mittwoch 17. Dezember 2008, 21:18
von INFACT
Das ist mein Programm, aber ich verstehe nicht was toggled() ist und wo ich es hinschreiben muss und wie ich es hinbekomme mit isChecked dass RadioButton_2 gecheckt ist.
Ich hoffe auf bladige Antworten!!!

Code: Alles auswählen

import os
import sys
from PyQt4 import QtGui, QtCore



class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(122, 141)
        self.radioButton = QtGui.QRadioButton(Dialog)
        self.radioButton.setGeometry(QtCore.QRect(20, 20, 84, 18))
        self.radioButton.setObjectName("radioButton")
        self.radioButton_2 = QtGui.QRadioButton(Dialog)
        self.radioButton_2.setGeometry(QtCore.QRect(20, 40, 84, 18))
        self.radioButton_2.setObjectName("radioButton_2")
        self.radioButton_3 = QtGui.QRadioButton(Dialog)
        self.radioButton_3.setGeometry(QtCore.QRect(20, 60, 84, 18))
        self.radioButton_3.setObjectName("radioButton_3")
        self.radioButton_4 = QtGui.QRadioButton(Dialog)
        self.radioButton_4.setGeometry(QtCore.QRect(20, 80, 84, 18))
        self.radioButton_4.setObjectName("radioButton_4")
        self.groupBox = QtGui.QGroupBox(Dialog)
        self.groupBox.setGeometry(QtCore.QRect(10, 10, 101, 91))
        self.groupBox.setObjectName("groupBox")
        self.pushButton = QtGui.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(10, 110, 101, 23))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
        self.radioButton.setText(QtGui.QApplication.translate("Dialog", "4-5", None, QtGui.QApplication.UnicodeUTF8))
        self.radioButton_2.setText(QtGui.QApplication.translate("Dialog", "2-3", None, QtGui.QApplication.UnicodeUTF8))
        self.radioButton_3.setText(QtGui.QApplication.translate("Dialog", "1-2", None, QtGui.QApplication.UnicodeUTF8))
        self.radioButton_4.setText(QtGui.QApplication.translate("Dialog", "0.5-1", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox.setTitle(QtGui.QApplication.translate("Dialog", "Sec. zu warten", None, QtGui.QApplication.UnicodeUTF8))
        self.pushButton.setText(QtGui.QApplication.translate("Dialog", "Los!", None, QtGui.QApplication.UnicodeUTF8))



class MyDialog(QtGui.QDialog, Ui_Dialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.setupUi(self)

        

        self.connect(self.pushButton,
                     QtCore.SIGNAL("clicked()"), self.onOK)
        self.connect(self.radioButton,
                     QtCore.SIGNAL("toggled()"), self.onOK) #was ist toggled und wo muss ich es hinschreiben
        self.connect(self.radioButton_2,
                     QtCore.SIGNAL("toggled()"), self.onOK) #was ist toggled und wo muss ich es hinschreiben
        self.connect(self.radioButton_3,
                     QtCore.SIGNAL("toggled()"), self.onOK) #was ist toggled und wo muss ich es hinschreiben
        self.connect(self.radioButton_4,
                     QtCore.SIGNAL("toggled()"), self.onOK) #was ist toggled und wo muss ich es hinschreiben
        
    def onOK(self):
        if self.radioButton is toggled():                   #was ist toggled und wo muss ich es hinschreiben
            print "HI"

app=QtGui.QApplication(sys.argv)
Dialog=MyDialog()
Dialog.show()
sys.exit(app.exec_())

Robin
-->Python neuling<--

Verfasst: Mittwoch 17. Dezember 2008, 21:26
von DasIch

Verfasst: Mittwoch 17. Dezember 2008, 22:15
von cofi
`toggled()' ist das Signal, das ein Radiobutton ausgibt, wenn es eben an-/ausgeschaltet wurde. Schmeiss in deiner `onOk' Methode die if-Abfrage weg, dann sollte es funktionieren.

Ausserdem solltest du dir die ButtonBox Klasse anschauen, wenn du mit mehreren Radiobuttons arbeitest. Ausserdem ist eine ComboBox meist sinnvoller, wenn man mit mehreren RadioButtons arbeiten muss.

Am besten lässt du weiterhin die ganzen ObjectNames und Geometrys in Ruhe und verwendest Layouts.

Zeilen 68,69: verwende .exec_() statt .show() und sys.exit brauchst du nicht.

Verfasst: Donnerstag 18. Dezember 2008, 13:36
von INFACT
Ich möchte es aber so hinbekommen, dass wenn radioButton getoggled ist und man dann auf den button drückt, dass dann etwas anderes passiert als wenn zb. radioButton_2 getoggled ist

Verfasst: Donnerstag 18. Dezember 2008, 14:00
von lunar
cofi hat geschrieben:Am besten lässt du weiterhin die ganzen ObjectNames [..] in Ruhe
Ohne vernünftige Objektnamen funktioniert Introspection nicht, daher sollte man sie immer setzen. Ansonsten muss man auf nette Sachen wie QMetaObject.connectSlotsByName oder QObject.findChildren verzichten ...
Zeilen 68,69: verwende .exec_() statt .show()
Das ist an der Stelle wohl ziemlich egal, da das Beispiel so oder so nur eine Ereignisschleife hat. Ansonsten ist aber "widget.show()" und "app.exec_()" die bessere Lösung, da sonst keine globale Ereignisschleife läuft.

Verfasst: Donnerstag 18. Dezember 2008, 14:51
von INFACT
Ja kann sein, aber ich glaube das hilft mir nicht. :?
kann mir jmd. einen einfachen dialog schreiben mit 1 radioButton und einem Pushbutton und wenn der radio button getoggled ist und man auf den button drückt printed die shell dann zb. "HALLO WELT"
oder so was in der art. :wink:

Verfasst: Donnerstag 18. Dezember 2008, 15:08
von lunar

Danke

Verfasst: Donnerstag 18. Dezember 2008, 15:52
von INFACT
Ah ok das ist das was ich wissen wollte. Jetzt weiß ich wie es funktioniert
Danke!!!