簡體   English   中英

未在tkinter python上分配全局變量

[英]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.

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