0

我正在使用 PySide 在 Qt 中制作应用程序。在我的 main.py 中,我有一个名为 Program 的类来设置用户界面,我还有另一个类,它具有与某个区域相关的功能。例如,我有一个区域有一个开始和一个清除按钮。我在 RunArea 类中定义函数并在 Program 类中连接信号,但没有任何反应。这是代码。

class Program(QtGui.QMainWindow, Interface.Ui_MainWindow):
    def __init__(self, parent=None):
        super(Program, self).__init__(parent)
        self.setupUi(self)

        self.runArea = RunArea()
        self.startButton.clicked.connect(self.runArea.start)
        self.clearButton.clicked.connect(self.runArea.clear)


class RunArea(QtGui.QMainWindow, Interface.Ui_MainWindow):
    def __init__(self, parent=None):
        super(RunArea, self).__init__(parent)
        self.setupUi(self)

    def start(self):
        self.log.setPlainText("log entry")

    def clear(self):
        self.runTree.clear()

我期望发生的是,当我单击开始时,“日志条目”将被放入 QTextEdit(在 setupUi 中定义)。当我单击清除时,名称为 runTree 的 TreeWidget 将被清除。我知道信号在起作用,但什么都没有出现。有人可以解释为什么它不起作用吗?

4

1 回答 1

0

我不确切知道您的代码为什么/如何不起作用,尽管我怀疑它与继承有关,而不是在两个类中引用相同的对象。
但是,应该这样做:

class Program(QtGui.QMainWindow, Interface.Ui_MainWindow):
    def __init__(self, parent=None):
        super(Program, self).__init__(parent)
        self.setupUi(self)

        self.runArea = RunArea(self)
        self.startButton.clicked.connect(self.runArea.start)
        self.clearButton.clicked.connect(self.runArea.clear)


class RunArea():
    def __init__(self, parent=None):
        self.parent = parent

    def start(self):
        self.parent.log.setPlainText("log entry")

    def clear(self):
        self.parent.runTree.clear()
于 2013-01-23T17:59:25.603 回答