我有一个python插件,其中main.py
文件显示QTextBrowser并写入一些文本。这很好用。
我写了第二个文件anotherFile.py
,它标识了相同的QTextBrowser,但不能写任何文本。也许它需要取得所有权,我不确定?
以下是使用的代码:
# main.py #
from Example_dockwidget import ExampleDockWidget
from anotherFile import anotherClass
class Example:
def __init__(self, iface):
self.iface = iface
def function(self):
self.dockwidget = ExampleDockWidget()
self.dockwidget.show()
textBrowser = self.dockwidget.textBrowser
#textBrowser.setText('This works!')
a = anotherClass(self)
a.anotherFunction()
# anotherFile.py #
from Example_dockwidget import ExampleDockWidget
class anotherClass:
def __init__(self, iface):
self.iface = iface
self.dockwidget = ExampleDockWidget()
def anotherFunction(self):
textBrowser = self.dockwidget.textBrowser
textBrowser.setText('This does not work!')
print 'Why?'
# Example_dockwidget.py #
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'Example_dockwidget_base.ui'))
class ExampleDockWidget(QtGui.QDockWidget, FORM_CLASS):
def __init__(self, parent=None):
super(ExampleDockWidget, self).__init__(parent)
self.setupUi(self)
答案 0 :(得分:1)
您的两个班级都创建了自己的ExampleDockWidget
。只显示其中一个(调用了show
方法),但有两个。
所以发送到一个文本的文本不会出现在另一个上也就不足为奇了。您需要安排anotherClass
对象获取对其他ExampleDockWidget
的引用,以便它可以共享同一个。{/ p>
答案 1 :(得分:0)
提到strubbly时,我需要引用相同的ExampleDockWidget
而不是创建单独的版本。在anotherFile.py
文件中,我添加了一个额外的参数来接收ExampleDockWidget
:
class anotherClass:
def __init__(self, iface, dockwidget):
self.iface = iface
self.dockwidget = dockwidget
def anotherFunction(self):
textBrowser = self.dockwidget.textBrowser
textBrowser.setText('This does not work!')
print 'Why?'
然后在main.py
文件中插入引用:
def function(self):
self.dockwidget = ExampleDockWidget()
self.iface.addDockWidget(Qt.RightDockWidgetArea, self.dockwidget)
self.dockwidget.show()
textBrowser = self.dockwidget.textBrowser
#textBrowser.setText('This works!')
a = anotherClass(self.iface, self.dockwidget)
a.anotherFunction()