0
のラジオボタンのうち、class B
のボタンを押してチェックを外したいとします。他のクラスのすべてのラジオボタンをオフにする方法
私の例のコードは以下の通りです:
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()
私のコードは今あるとして、それは二つの問題ました:
ラジオボタンとプッシュボタンが
まで表示されません。
ラジオボタンとプッシュボタンが最終的に表示されるとします。
Widget2
のプッシュボタンをクリックすると、のラジオボタンが表示されます0が既にチェックされている場合はチェックを外す必要があります。
私はすでにWidget1
に第二引数bridge
を置くことによってWidget1
とWidget2
をリンクしていますのでご注意ください。私がこれをした理由は、私の元のプロジェクトには他にもいくつかの機能があるからです。可能であれば、この部分を変更しないでください。
私はこの権利を得ているので、私は3つのクラス 'C'で2つのクラス(' A'と 'B')をリンクさせて、' A'と 'B'の間のすべてのアクションを'私が議論をしている限り(例えば 'brid私の例では「ge」)を2つのクラスの1つに入れますか?さらに、「ブリッジ」を設定しないでください。 – ryan9025
@ ryan9025。 'C'クラスは' A'と 'B'を知っていますが、' A'と 'B'はお互いを知りません。 'C'の中で' A'と 'B'の間にすべての信号を接続すると、必ずしもブリッジが必要なわけではありません。それはシグナルの美しさです。コンポーネントはお互いを知る必要はありません。彼らは到着時に信号に反応します。 「橋」の使用を推奨する別の質問をしましたか?もしそうなら、それなしでそれを解決することは可能かもしれません。 – ekhumoro