[英]global variable not being assigned on tkinter python
我正在一個項目中嘗試獲取文件目錄。 我在將目錄分配給全局變量時遇到問題,以便...
這是我的嘗試:
dir = None
def print_dir(event):
print(dir)
def main:
root = Tk()
def get_dir(event):
ftypes = [('PDF',"*.pdf")]
root.fileName = askopenfilename(filetypes = ftypes)
dir = root.fileName
return
btn = Button(root, text="+ Get dir")
btn.grid(row=3, column=6)
btn.bind("<Button-1>", get_dir)
btn_two = Button(root, text="+ Print dir")
btn_two.grid(row=3, column=6)
btn_two.bind("<Button-1>", print_dir)
root.mainloop()
即使使用第一個按鈕打開目錄文件,也不會打印任何內容。
我不清楚為什么要在main()
外部定義函數print_dir()
main()
和在main()
內部定義函數get_dir()
main()
。 這根本沒有意義。
但; 您可以在函數get_dir()
中為變量folder
分配一個值,該值位於本地范圍內。 退出函數時,變量將被垃圾回收。 如果Python在更廣泛的范圍內定義,它將使用變量folder
。
這可能有效。
from tkinter import *
from tkinter.filedialog import *
folder = None
def print_dir(event):
print(folder)
def main():
global folder # Making variable "folder" global
root = Tk()
def get_dir(event):
global folder # Making variable "folder" global
ftypes = [('PDF',"*.pdf")]
root.fileName = askopenfilename(filetypes = ftypes)
folder = root.fileName
return
btn = Button(root, text="+ Get dir")
btn.grid(row=2, column=6)
btn.bind("<Button-1>", get_dir)
btn_two = Button(root, text="+ Print dir")
btn_two.grid(row=3, column=6)
btn_two.bind("<Button-1>", print_dir)
root.mainloop()
main()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.