2017-10-04 40 views
0

所有單選按鈕我想在class B按下一個按鈕來取消選中class A一些單選按鈕。如何取消從另一個類

我的示例代碼如下:

import sys, os 

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

class Widget1(QWidget): 
    def __init__(self, bridge, parent=None): 
     super().__init__() 

     self.bridge = bridge 

     self.grid = QGridLayout() 

     self.radiobtn = QRadioButton() 
     self.grid.addWidget(self.radiobtn, 0, 0) 

class Widget2(QWidget): 

    def __init__(self, parent = None): 
     super().__init__() 

     self.grid = QGridLayout() 

     self.pushbtn = QPushButton() 
     self.grid.addWidget(self.pushbtn,0, 0) 

class Tab1Layout(QWidget): 
    def __init__(self, parent = None): 
     super().__init__() 
     self.grid = QGridLayout() 

     self.group2 = Widget2() 

     self.group1 = Widget1(self.group2, self) 

     self.grid.addWidget(self.group1, 0, 0) 
     self.grid.addWidget(self.group2, 1, 0) 


class Tabs(QTabWidget): 
    def __init__(self, parent = None): 
     super().__init__() 
     self.tab1 = Tab1Layout() 
     self.addTab(self.tab1, 'Tab1') 

     self.show() 

def main(): 
    app = QApplication(sys.argv) 
    main = Tabs() 
    main.show() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 

由於我的代碼現在,它有兩個問題:

  1. 的單選按鈕,按鈕不會顯示

  2. 比方說,單選按鈕,按鈕終於露面:我想,當我點擊Widget2按鈕,在單選按鈕如果它已被選中,則應該取消選中0。

請注意,我已經通過把第二個參數bridgeWidget1Widget1Widget2。我這樣做的原因是因爲我的原始項目中還有其他一些功能。所以請儘可能不要改變這部分。

回答

0

的按鈕顯示不出來,因爲你還沒有添加網格佈局到任何小部件。因此,對於所有三個網格佈局,請執行此:

self.grid = QGridLayout() 
    self.setLayout(self.grid) 

或本:

self.grid = QGridLayout(self) 

檢查/用一個按鈕點擊取消選中的單選按鈕,這樣做:

class Tab1Layout(QWidget): 
    def __init__(self, parent = None): 
     ... 
     self.group2.pushbtn.clicked.connect(self.group1.radiobtn.toggle) 
+0

如果我得到這個權利,所以我可以在第三類'C'鏈接兩個班(讓我們說'A'和'B')在一起,然後做A'和'B'之間'的行動'只要我設置了一個參數(比如'brid ge'在我的例子中)在兩個類中的一個?更重要的是,我可以不設置「橋」嗎? – ryan9025

+0

@ ryan9025。該'C'類知道'A'和'B',但A''和'B'不知道對方的存在。如果你在'C'內連接'A'和'B'之間的所有信號,那麼你不一定需要這個橋。這就是信號的美妙之處:組件不需要彼此瞭解;他們只是在信號到達時對信號作出反應。你有沒有問另一個建議使用「橋」的問題?如果是這樣,也許可以沒有一個解決它。 – ekhumoro