Python-Tkinter消息框:如何从Entry中获取变量并在以后的代码中使用它

时间:2018-10-31 17:34:18

标签: python user-interface tkinter

我正在尝试设置GUI消息程序,但我需要对其进行设置,以便可以重用主机名和端口。这是我尝试做的,但是我被卡住了

from threading import Thread
import tkinter

HOST = "localhost"
PORT = 33000
"""GET PORT AND HOST GUI""" 
def show_entry_fields():
  print("HOST: %s\nPORT: %s" % (e1.get(), e2.get()))
  HOST = e1.get()
  PORT = e2.get()
  return HOST, PORT

master = Tk()
Label(master, text="HOST").grid(row=0)
Label(master, text="PORT").grid(row=1)

e1 = Entry(master)
e2 = Entry(master)

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

#Button(master, text='Quit', command=master.quit).grid(row=3, column=0, 
sticky=W, pady=4)
Button(master, text='Show', command=show_entry_fields).grid(row=3, column=1, 
sticky=W, pady=4)

mainloop( )
"""END GUI"""

print("Host: %s Port: %s" % (HOST, PORT))

我要尝试的是从线程中获取变量,并在关闭GUI窗口后使用它。 有办法吗?

1 个答案:

答案 0 :(得分:0)

只需更改show_entry_fields方法以包括HOST和PORT变量的全局声明即可。由于Tkinter不期望或处理该函数的返回值,因此return HOST, PORT行不执行任何操作。

def show_entry_fields():
    print("HOST: %s\nPORT: %s" % (e1.get(), e2.get()))
    global HOST
    global PORT
    HOST = e1.get()
    PORT = e2.get()