我使用名为“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()
答案 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)
...