【问题标题】:How to get input from text entry after destroying window销毁窗口后如何从文本输入中获取输入
【发布时间】:2019-05-26 18:37:46
【问题描述】:

我是这个网站(和 Python)的新手,这是我的第一篇文章,如果有不清楚的地方,我很抱歉。基本上,我试图编写一个模拟彩票的代码。为此,我使用 tkinter 和 text-entry 来填写数字。当我破坏输入窗口时出现问题,其中未保存猜测的数字。我的问题是,如何销毁我的窗口并从文本条目中获取输入?

我尝试使用 IntVar 没有成功,不确定我是否理解正确。

from tkinter import*
import random

Part1 = list(range(1,51))
Part2 = list(range(1,11))

Numbers = [0]*7

for n in range (5):
    Number = random.choice(Part1)

    Position = Part1.index(Number)
    del Part1[Position]

    Numbers[n] = Number


for i in range (2):
    Number = random.choice(Part2)

    Position = Part2.index(Number)
    del Part2[Position]

    Numbers[5+i] = Number

print (Numbers)


def master1_quit():
    master1.destroy()   

# def window():

master1 = Tk()

Label(master1, text="Guess numbers:").grid(row=0)

e1 = Text(master1, width=2, height=1)
e2 = Text(master1, width=2, height=1)
e3 = Text(master1, width=2, height=1)
e4 = Text(master1, width=2, height=1)
e5 = Text(master1, width=2, height=1)
e6 = Text(master1, width=2, height=1)
e7 = Text(master1, width=2, height=1)


e1.grid(row=0, column=1, padx=5)
e2.grid(row=0, column=2, padx=5)
e3.grid(row=0, column=3, padx=5)
e4.grid(row=0, column=4, padx=5)
e5.grid(row=0, column=5, padx=5)
e6.grid(row=0, column=7, padx=5)
e7.grid(row=0, column=8, padx=5)

master1.grid_columnconfigure(6, minsize=20) # Creates an empty column (nr. 6) with width 20

# Save guessed numbers
Guess = [e1.get(1.0, "end-1c"), e2.get(1.0, "end-1c"), e3.get(1.0, "end-1c"), e4.get(1.0, "end-1c"), e5.get(1.0, "end-1c"), e6.get(1.0, "end-1c"), e7.get(1.0, "end-1c")]

Button(master1, text='OK', command=master1_quit).grid(row=3, column=3, sticky=W, pady=5)



master1.mainloop()


# window()

基本上我希望在窗口被销毁后保存变量“Guess”,因为我想稍后使用它。

补充问题: 是否可以在后面的代码中写“def window()”并用“window()”调用窗口?

【问题讨论】:

    标签: tkinter python-3.7


    【解决方案1】:

    欢迎来到 Stackoverflow,感谢您提出明确的问题。

    如果您更改master1_quit 函数以在窗口退出时更新全局变量GuessGuess 将显示 7 个文本小部件的最终状态,示例如下。在您的代码中,Guess 在创建 UI 时从 7 个文本小部件中填充。此时所有的文本字段都是空的。

    def master1_quit():
        global Guess
        Guess = [e1.get(1.0, "end-1c"), e2.get(1.0, "end-1c"), e3.get(1.0, "end-1c"),
                 e4.get(1.0, "end-1c"), e5.get(1.0, "end-1c"), e6.get(1.0, "end-1c"),
                 e7.get(1.0, "end-1c")]
        master1.destroy()
    

    对于这样简单的数据,您可能会发现 Entry 小部件比 Text 小部件更容易。您可以使用 e1.get() 来恢复 Entry 小部件中的文本,无需担心任何参数。

    【讨论】:

      猜你喜欢
      • 2012-05-12
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多