作者warain (空白)
看板Python
標題[問題] 區域,全域變數問題求解
時間Mon Mar 6 19:57:32 2017
各位版友好,最近遇到了一個問題,不知是否能撥空幫忙看要如何修改
問題是用tkinter的filedialog選取檔案,然後將所選取的路徑丟給excel處理
看起來問題是函式內的區域變數無法拿到全域使用,但google了好一陣子仍不知如何修改
麻煩各位幫個忙
感激不盡!
Fail訊息如下
NameError: name 'report_fileselect' is not defined
code如下:
import tkinter
from openpyxl import load_workbook
from tkinter import filedialog
root = tkinter.Tk()
Text_0 = tkinter.Label(root, text="Select")
Text_0.grid(row=0, column=0)
def report_select():
combine_fileselect =
filedialog.askopenfilenames(title="Choose file",multiple=True,filetypes=[("xlsm files","*.xlsm")])
BTN_0 =tkinter.Button(root,width=12,text="",command=report_select,borderwidth=4)
BTN_0.grid(row=0, column=1,sticky="WE")
def QPD_select():
global report_fileselect
report_fileselect=
filedialog.askopenfilename(initialdir="c:",title="Choose
QPD",filetypes=[("xlsm files","*.xlsm")])
BTN_1 =
tkinter.Button(root,width=12,text="",command=QPD_select,borderwidth=4)
BTN_1.grid(row=1, column=1,sticky="WE")
wb = load_workbook(report_fileselect, keep_vba=True, read_only=False)
sheet = wb.get_sheet_by_name("Result")
root.mainloop()
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.88.57
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1488801457.A.E3D.html
→ jack123218: Global 要設在function外面? 03/06 20:19
→ zerof: ...你 global 根本沒有 report_fileselect 的 define, 就算 03/06 20:59
→ zerof: 在 def 裡面用 global 也沒用吧...... 03/06 21:00
→ zerof: root 後面加一行 report_fileselect = None 應該就可以了 03/06 21:01
→ physheepy: 如樓上說的 或者讓 QPD_select回傳 report_fileselect 03/07 12:40
→ physheepy: add "return report_fileselect" in QPD_select 03/07 12:41