簡體   English   中英

Python:將在一個文件中的一個類的方法中定義的變量傳遞給另一個文件

[英]Python: Pass variable defined in method of one class in one file to another seperate file

我使用wxpython創建了一個名為“ WindowClass”的類。 它有幾種方法,包括以下三種:

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()

假設您想在另一個函數中重用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)
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM