在单独的文件中从子ui小部件禁用主ui小部件

时间:2017-03-24 00:20:23

标签: python pyqt

我有2个ui文件 - main_uisub_ui

当打开main_ui时,有一个QPushButton和一个QListWidget。 如果用户点击QPushButton,它将打开sub_ui。

另一方面,sub_ui中只有一个QPushButton。 如果用户点击此QPushButton,则应禁用main_ui中的listWidget

我遇到了禁用问题。 虽然没有提示错误,但我无法禁用listWidget。

这是我的main_ui代码:

class MainUI(QtGui.QDialog):
    def __init__(self, parent=None):
        super(MainUI, self).__init__(parent=parent)
        self.init_main_ui()
        self.main_signals()
        self.setFixedSize(QtCore.QSize(300, 600))

    def init_main_ui(self):
        self.mainBtn = QtGui.QPushButton("show sub ui")
        self.listWidget = QtGui.QListWidget(self)

        self.mainLayout = QtGui.QVBoxLayout()
        self.mainLayout.addWidget(self.mainBtn)
        self.mainLayout.addWidget(self.listWidget)

        self.setLayout(self.mainLayout)

    def main_signals(self):
        self.mainBtn.clicked.connect(self.onClicked)

    def onClicked(self):
        subUI = SubUI()
        subUI.show()

这是我的sub_ui代码:

import main_ui

class SubUI(QtGui.QDialog):
    def __init__(self, parent=None):
        super(SubUI, self).__init__(parent=parent)
        subLayout = QtGui.QVBoxLayout(self)
        subBtn = QtGui.QPushButton('Testing')

        subLayout.addWidget(subBtn)
        subBtn.clicked.connect(self.disable_list)

    def disable_list(self):
        mainUI = main_ui.MainUI()
        mainUI.listWidget.setEnabled(False)

我该如何解决?

1 个答案:

答案 0 :(得分:0)

按如下方式更改onClicked

def onClicked(self):
    subUI = SubUI()
    subUI.subBtn.clicked.connect(self.disable_list)
    subUI.show()

disable_list移至MainUI并将其更改为:

 def disable_list(self):
    self.listWidget.setEnabled(False) 

从SubUI删除subBtn.clicked.connect来电(已移至onClicked)。

使subBtn成为SubUI的成员变量,以便您可以从onClicked访问它。

self.subBtn = QtGui.QPushButton('Testing')
subLayout.addWidget(self.subBtn)