一个简单的情况证明相当棘手。
我的目标是获得一个窗口来更新另一个窗口中窗口小部件的状态。 解释:
我有一些带有“数据”的窗口A,我希望它写入窗口B的textEdit小部件。主窗口和小部件的细节是
&
我目前无法获得的是一个简单的方法,从另一个窗口调用(和另一个文件)可以更改textEdit中的内容。 不确定我做错了什么,但是当我尝试从类中导入类或方法时,我似乎总是遇到问题
TypeError:必须使用调用unbound方法updEdit() MainWin实例作为第一个参数(没有取而代之)
我非常乐于接受建议,并提前感谢!
编辑#1
从文件Rep.py(我正在调用的第二个窗口)
class MainWin(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(1127, 880)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.textEdit = QtGui.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(20, 150, 1081, 661))
self.textEdit.setObjectName(_fromUtf8("textEdit"))
self.textEdit.isUndoRedoEnabled ()
从第一个窗口,我需要做的就是:
def addTemplate(self):
data = self.textBrowser.toPlainText()
MainWin.MainWin.addText(MainWindow.MainWin,data)
self.close()
我对OOP相当新,所以如果有一些相当愚蠢的错误,请原谅我。
答案 0 :(得分:0)
创建第二个窗口时,传入对第一个窗口的引用并将其存储为属性:
class SecondWindow(QMainWindow):
def __init__(self, firstwindow, parent=None):
super(SecondWindow, self).__init__(parent)
self.firstwindow = firstwindow
...
def addTemplate(self):
data = self.textBrowser.toPlainText()
self.firstwindow.addText(data)
如果第二个窗口是QMainWindow
或QDialog
,您还可以将第一个窗口作为第二个窗口的父窗口 - 在这种情况下,不需要将其存储为属性你可以做到:
self.parent().addText(data)
这样做也意味着第一个窗口关闭时第二个窗口将自动关闭。