PyQt radio button toggled() und isChecked Frage

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

PyQt radio button toggled() und isChecked Frage

Beitragvon INFACT » Mittwoch 17. Dezember 2008, 21:18

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.
DasIch
User
Beiträge: 2405
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Mittwoch 17. Dezember 2008, 21:26

Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Mittwoch 17. Dezember 2008, 22:15

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

Beitragvon INFACT » Donnerstag 18. Dezember 2008, 13:36

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

Beitragvon lunar » Donnerstag 18. Dezember 2008, 14:00

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

Beitragvon INFACT » Donnerstag 18. Dezember 2008, 14:51

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:
lunar

Beitragvon lunar » Donnerstag 18. Dezember 2008, 15:08

Benutzeravatar
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Danke

Beitragvon INFACT » Donnerstag 18. Dezember 2008, 15:52

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder