当第一个窗口继续运行时,如何从第二个窗口的tkinter Entry小部件获取输入

时间:2020-07-08 10:03:47

标签: python-3.x tkinter input widget tkinter-entry

from tkinter import *

def first():
    root1 = Tk()

    Button(root1, text = 'get Second', command= second).pack()

    root1.mainloop()


def second():
    root2 = Tk()

    user_input = StringVar()

    Entry(root2, text  = user_input).pack()

    Button(root2, text = 'submit', command  = lambda : print(user_input.get(), '\t printed')).pack()

    root2.mainloop()

first()

1 个答案:

答案 0 :(得分:1)

您在这里犯了一些基本错误-

  1. 如果要使用第二个窗口,则应为Toplevel而非root Tk窗口。程序中应该只有一个根窗口。这应该作为所有窗口的父级。
  2. 在大多数情况下,优良作法是分别定义诸如Button和Entry之类的小部件,然后将它们打包()。
  3. 条目应具有“文本变量”而不是“文本”

以下是更新的代码,可能会对您有所帮助-

from tkinter import *

root = Tk()

def first():

    button = Button(root, text = 'get Second', command= second)
    button.pack()

    root.mainloop()

def second():
    window2 = Toplevel(root)

    user_input = StringVar()

    entry = Entry(window2, textvariable=user_input)
    entry.pack()

    button = Button(window2, text = 'submit', command  = lambda: print(user_input.get()))
    button.pack()

first()