从Python中的另一个文件中的另一个类覆盖变量

时间:2015-05-25 22:39:34

标签: python python-2.7

我正在尝试通过另一个python文件中的变量更新我的UI。两者都在自己的班级。两者都保存在名为:System的文件夹中。 由于我不想重新执行UI,我不能简单地导入文件。 我的问题:如何在不重新执行的情况下从另一个文件中的另一个类更改变量?

toolsUI.py

class toolsUI:
    def __init__(self):
        # Store UI elements in a dictionary
        self.UIElements = {}

        if cmds.window("UI", exists=True):
            cmds.deleteUI("UI")

        self.UIElements["window"]=cmds.window("UI", width=200, height=600, title="UI")
        self.createColumn() # Create Column

        # Display window
        cmds.showWindow(self.UIElements ["window"])

    def createColumn(self):
        self.UIElements["column"] = cmds.columnLayout(adj=True, rs=3)
        self.UIElements["frameLayout"] = cmds.frameLayout(height=columnHeight, collapsable=False, borderVisible=True, label="To Change Label")

maintenance.py

class maintenance:
    def __init__(self):
        changeLabel = "Label is Changed"

        self.changeLabelColumn(changeLabel) # Change Label Column

    def changeLabelColumn(self, changeLabel):
        import System.toolsUI as toolsUI """<--- probably not a good idea"""
        cmds.frameLayout(toolsUI.UIElements["frameLayout"], edit=True, label=changeLabel)

1 个答案:

答案 0 :(得分:0)

执行此操作的正确方法是创建toolsUI类型的对象,然后对其进行操作。

import System

class maintenance:
    def __init__(self):
        changeLabel = "Label is Changed"
        self.ui = System.toolsUI() # create a new object
        self.changeLabelColumn(changeLabel)

    def changeLabelColumn(self, changeLabel):
        cmds.frameLayout(
            self.ui.UIElements["frameLayout"],  # use the object instead
            edit=True, 
            label=changeLabel)
通过这种方式,您可以拥有多个toolsUI个不会相互干扰的对象。