PyQt radio button toggled() und isChecked Frage

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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<--
Zuletzt geändert von INFACT am Donnerstag 18. Dezember 2008, 15:52, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

`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.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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
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.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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:
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Ah ok das ist das was ich wissen wollte. Jetzt weiß ich wie es funktioniert
Danke!!!
Antworten