我正在使用PySide在Qt中创建一个应用程序。在我的main.py中,我有一个名为Program的类,用于设置ui,我有另一个类,它具有与某个区域相关的功能。例如,我有一个区域有一个开始和一个清除按钮。我在类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时,将清除它。我知道信号正在工作,但没有任何东西出现。有人可以解释为什么它不起作用吗?
答案 0 :(得分: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()