Python:将在一个文件中的一个类的方法中定义的变量传递给另一个单独的文件

时间:2015-03-26 06:35:35

标签: python oop wxpython

我使用名为“WindowClass”的wxpython创建了一个类。它有几种方法,包括以下三种方法:

def onOpenFile(self, event):
    dlg = wx.FileDialog(
        self, message="Choose a file",
        defaultDir=self.currentDirectory,
        defaultFile="*.xls",
        wildcard=wildcard,
        style=wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR
    )
    if dlg.ShowModal() == wx.ID_OK:
        self.path = dlg.GetPath()
        self.pathBox.write(self.path)
    dlg.Destroy()

def onGo(self, event):
    path=self.pathBox.GetValue()
def openExcel(self): 
    rbook=open_workbook(self.path)

基本上,有两个按钮。一个标记为“选择输入文件”,一个标记为“GO!”。它们的功能由上述方法定义。

我希望此路径变量在另一个文件中可用,该文件将获取值(文件路径)并将其提供给打开excel文件的函数。

我在做这件事时遇到了问题...

这是我在另一个文件中的代码的开头:

app = wx.App()
windowClass(None, title="AskNorbert")
sheet = rbook.sheet_by_index(0)
numrows = (sheet.nrows)
numcols = (sheet.ncols)
leadslist = [[sheet.cell_value(i, j) for j in range(numcols)] for i in  range(numrows)]
wbook = copy(rbook)
w_sheet = wbook.get_sheet(0)
....
app.Mainloop()

1 个答案:

答案 0 :(得分:1)

假设你想在另一个函数中重用self.path,对吗?

首先,您需要将此功能放在" WindowClass"下,然后使用self.path作为输入来打开Excel:

...
def openExcel(self):
    your_open_excel_function(self.path)
...    

第二,为了确保在dlg.Destroy()时self.path不会消失,你可以对它进行深度检查:

import copy.deepcopy

...
if dlg.ShowModal() == wx.ID_OK:
        self.path = copy.deepcopy(dlg.GetPath())
        self.pathBox.write(self.path)
    dlg.Destroy()
...

这应该适合你。

<强>更新

首先,让rbook成为WindowClass的一个属性:

def openExcel(self): 
    self.rbook=open_workbook(self.path)

使用该实例的rbook属性。像这样:

...
app = wx.App()
my_class = windowClass(None, title="AskNorbert")
my_class.openExcel()
sheet = my_class.rbook.sheet_by_index(0)
numrows = (sheet.nrows)
...