SetChecked संभालने लायक एक और समूह के pyqt

0

सवाल

मैं 2 रेडीयो बटन बनाया (एक QMainWindow वर्ग) की तरह:

    def dtype_radiobuttons(self):
        layout = QHBoxLayout()
        rb1 = QRadioButton("complex")
        rb1.toggled.connect(lambda: self.update_image("dtype", rb1.text()))


        self.real_dtype_rb = QRadioButton("real", self)
        self.real_dtype_rb.toggled.connect(lambda: self.update_image("dtype", self.real_dtype_rb.text()))

        self.btngroup.append(QButtonGroup())
        self.btngroup[-1].addButton(self.real_dtype_rb)
        self.btngroup[-1].addButton(rb1)

        rb1.setChecked(True)
        layout.addWidget(rb1)
        layout.addWidget(self.real_dtype_rb)
        layout.addStretch()

        return layout

    def library_radiobutton(self):
        layout = QHBoxLayout()
        self.cvnn_library_rb = QRadioButton("cvnn", self)
        self.cvnn_library_rb.toggled.connect(lambda: self.update_image("library", self.cvnn_library_rb.text()))

        rb2 = QRadioButton("tensorflow", self)
        rb2.toggled.connect(lambda: self.update_image("library", rb2.text()))

        self.btngroup.append(QButtonGroup())
        self.btngroup[-1].addButton(rb2)
        self.btngroup[-1].addButton(self.cvnn_library_rb)

        self.cvnn_library_rb.setChecked(True)
        layout.addWidget(self.cvnn_library_rb)
        layout.addWidget(rb2)
        layout.addStretch()

        return layout

मैं बनाने के लिए चाहते हैं, यह असंभव है का चयन करने के लिए complex विकल्प के dtype रेडीयो बटन समूह और tensorflow radiobutton पुस्तकालय के रेडीयो बटन. छोड़ने के 3 से 4 संभव संयोजनों. तो अगर मैं का चयन करें complex और पुस्तकालय था tensorflow, मैं करने के लिए चाहते हैं स्वचालित रूप से परिवर्तन करने के लिए पुस्तकालय cvnn. मैं करने की कोशिश की इस तरह से इसे लागू:

    def update_image(self, key, value):
        if value == "complex":
            if hasattr(self, 'cvnn_library_rb'):    # It wont exists if I still didnt create the radiobutton.
                self.cvnn_library_rb.setChecked(True)   # Set library cvnn
        elif value == "tensorflow":
            if hasattr(self, 'real_dtype_rb'):
                self.real_dtype_rb.setChecked(True)   # Set real dtype
        ... Do the other stuff I need to do.

अजीब बात यह है कि यह वास्तव में काम करता है कि भावना में, उदाहरण के लिए, अगर मैं कर रहा हूँ पर complex सक्रिय और का चयन करें tensorflowको संभालने लायक परिवर्तन करने के लिए real (मैं क्या चाहते हैं!) लेकिन tensorflow नहीं मिलता चयनित! मैं की जरूरत का चयन करने के लिए इसे फिर से के रूप में यदि बनाने के self.real_dtype_rb.setChecked(True) रद्द चयन की radiobutton मैं पर क्लिक किया. (बहुत अजीब है अगर आप मुझसे पूछें).


  • के hasattr प्रयोग किया जाता है, क्योंकि आदेश के आधार पर मैं फोन कार्यों, वहाँ रहे हैं कुछ रेडीयो बटन बनाया जाएगा कि इससे पहले कि अन्य, तो यह मौजूद नहीं हो सकता है.

  • इस एक विकल्प है, मैं विचार कर रहा हूँ, लेकिन यह अक्षम radiobutton समूह बदलने के बजाय अपने राज्य में नहीं है (मैं क्या पसंद करते हैं).

pyqt python qt
2021-11-23 08:48:26
1

सबसे अच्छा जवाब

1

संकेत toggled शुरू हो रहा है जब आप स्थिति बदलने के लिए अपने रेडियो की बटन । तो, यह ट्रिगर किया जाएगा जब आप कॉल setChecked (एक बार के लिए रेडियो बटन टॉगल और एक बार के लिए अन्य आप untoggle) और update_image कहा जाता है है गलत के मामले में ।

आप की जाँच करने के लिए राज्य के रेडियो बटन और कॉल update_image तभी रेडियो बटन toggled है:

rb2.toggled.connect(lambda state: state and self.update_image("library", rb2.text(), state))
2021-11-23 10:45:03

यह काम किया! धन्यवाद!
Agustin Barrachina

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में