当事件发生时,Python从类返回值

时间:2016-03-08 09:51:22

标签: python class

我在main.py文件中有主应用程序,在uiwidgets.py中有一些UI类。

在main.py中的

我有:

import uiwidgets as uiw
uiw.MultiColumnListbox(header, data)

def doSomething(self, n)
    do something with n

在uiwidgets.py我有:

class MultiColumnListbox(object):

def __init__(self, header, data):
    self.header=header
    self.data=data

...

    self.tree.bind( "<Double-Button-1>", self.OnClick)

def OnClick(self, event):
    global return_index
    item = self.tree.identify('item',event.x,event.y)
    if item is not "":      
        return_index = (int((item[1:4]),16) - 1)
        n = self.data[return_index][0]

当用户单击窗口小部件时,我需要将n值从类返回到main.py.我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以在uiwidgets.py处创建一个全局变量,然后将其命名为“transfervar”&#39;或类似的东西。然后在main.py中再次导入uiwidgets.py。它应该让你适应&#39; transfervar&#39;在main.py.

如果n的值很复杂或很长,您也可以将其写入文本文件。但是,你需要知识如何编写和读取文件。这是非常好的学习#34;思考pythonger&#34;,Allen B. Downey,第14章。

使用全局变量的代码如下所示:

    transfervar = None   #just to create, you could set it 0, too 

    class MultiColumnListbox(object):

    def __init__(self, header, data):
        self.header=header
        self.data=data

    ...

        self.tree.bind( "<Double-Button-1>", self.OnClick)

    def OnClick(self, event):
        global return_index
        item = self.tree.identify('item',event.x,event.y)
        if item is not "":      
            return_index = (int((item[1:4]),16) - 1)
            n = self.data[return_index][0]
            global transfervar     #needs to be declared as global
            transfervar = n