Python 来自函数的tkinter条目变量

Python 来自函数的tkinter条目变量,python,tkinter,global,tkinter-entry,Python,Tkinter,Global,Tkinter Entry,这应该很容易,但我正在忍受寻找我需要的答案的疲劳。下面的代码弹出一个输入窗口。我在输入字段中输入,函数show_entry_fields()获取输入,窗口关闭。然后我想在下面的代码中使用新的条目变量,但它们会恢复为初始的全局值。我将它们定义为全局的,以便在整个脚本中使用它们,但entry函数无法更改它们。我怎样才能从用户那里获得可供程序其余部分使用的输入 import tkinter as tk site = 'cats' score = 100 def show_entry_fields(

这应该很容易,但我正在忍受寻找我需要的答案的疲劳。下面的代码弹出一个输入窗口。我在输入字段中输入,函数show_entry_fields()获取输入,窗口关闭。然后我想在下面的代码中使用新的条目变量,但它们会恢复为初始的全局值。我将它们定义为全局的,以便在整个脚本中使用它们,但entry函数无法更改它们。我怎样才能从用户那里获得可供程序其余部分使用的输入

import tkinter as tk

site = 'cats'
score = 100

def show_entry_fields():
    site = e1.get()
    score = e2.get()
    master.destroy()
    #print(site,score)


master = tk.Tk()
master.columnconfigure(1, weight=1)
tk.Label(master, text="website").grid(row=0)
tk.Label(master, text="Image Ranking").grid(row=1)

e1 = tk.Entry(master)
e2 = tk.Entry(master)

e1.insert(0,site)

e1.grid(row=0, column=1, sticky='EW')
e2.grid(row=1, column=1, sticky='EW')

tk.Button(master, text='Quit', command=master.quit).grid(row=3,  column=0, sticky='W', pady=4)
tk.Button(master, text='Go!', command=show_entry_fields).grid(row=3, column=1, sticky='W', pady=4)
master.mainloop( )

print(site, score)

这能解决问题吗

def show_entry_fields():
    global site, score, master
    site = e1.get()
    score = e2.get()
    master.destroy()

至少程序末尾的打印结果是正确的。

是的,就是这样。但我明白,在开始时声明变量会使它们成为全局变量。我回到过去,一开始就明确地做到了这一点,这也很有效。谢谢你的帮助,不客气!有一点建议:尽量避免使用全局变量,或者至少只在需要的地方使用
global
。这将避免未来的冲突!顺便说一下:如果答案有帮助,请将其标记为已接受(单击答案左侧的“V”)和/或向上投票(使用向上箭头)。这样,其他人就会知道你的问题有一个有效的答案!