Calling UI objects from a file into another
我目前正在用python为maya编写一个UI脚本。
所以,我有一个在顶部有不同标签的UI,我不想把每一段代码都放在
问题是,如何在新文件中从UI调用objectname?我试图导入
编辑
例子:
test.ui文件有一个标记为"打印"的按钮和一个列表小部件。每次按下"打印"按钮,"Hello World"将出现在列表小部件上。
在loadui_test.py文件中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | def loadUi(uiFile): #code that loads ui def getMayaWindow(): #gets main Maya Window ptr = apiUI.MQtUtil.mainWindow() if ptr is not None: return shiboken.wrapInstance(long(ptr), QtGui.QMainWindow) class mainClass(): def __init__(self, parent = getMayaWindow()): super(pipeWindow,self).__init__(parent) self.setupUi(self) def closeEvent(self,event): super(mainClass, self).closeEvent(event) |
功能测试中
1 2 3 | def printFunc(): listWidget.clear() listWidget.addItem("Hello World!") |
in in .pY
1 2 3 4 5 6 7 | from pipeline import loadUi_test from pipeline import function_test uiFile ="test.ui" b = loadUi_test.loadUi(uiFile) a = loadUi_test.mainClass() a.pushButton.clicked.connect(function_test.printFunc(b)) |
这不起作用,我得到一个错误"tuple对象没有属性listwidget"
如果我改为这样做:
通常,只要所有文件都在您的python路径上可用,就可以从其他文件加载类。可以使用import语句加载类。
典型模式的一个基本示例在磁盘上如下所示
1 2 3 4 5 6 | mytool | +--- __init__.py +--- model_tab.py +--- texture_tab.py +--- tool_tab.py |
其中,主工具是
1 2 3 | from mytool.model_tab import ModelTab from mytoool.texture_tab import TextureTab from mytool.tool_tab import ToolTab |
这样,您就可以使用在其他文件中定义的类来组装实际的GUI。你可以把你的主班放在