【发布时间】:2016-12-23 07:49:10
【问题描述】:
令人难以置信的是,如此基础的知识竟能埋藏在如此难找的地方。我花了将近一个月的时间在谷歌上搜索答案——观看视频、阅读文档、书籍等——关于如何停止 while 循环以获取使用 Tkinter 的用户的输入。
我下面的代码循环了两次,在我能够提供输入之前离开循环!!!
无论如何,理论是值得赞赏的,但示例代码会更有帮助。非常非常感谢。
# Python 3.5.1
from tkinter import *
from tkinter import ttk
loop = 0
while loop < 2:
print ('loop')
def user_data():
user_input = data.get()
print (user_input)
lb=ttk.Label(root, text="Enter data")
data=ttk.Entry(root)
bt=ttk.Button(root, text='Ok', command=user_data)
lb.grid(row=0, column=1)
data.grid(row=0, column=2)
bt.grid(row=0, column=3)
loop += 1
print ('left loop')
root.mainloop()
【问题讨论】:
-
你在哪里定义
root? -
这很难做到,因为这根本不是图形用户界面的设计方式。这有点像说你已经搜索了一个月如何在搅拌机中煮牛排。如果您需要暂停并从用户那里获取信息,您应该使用模态对话框。见effbot.org/tkinterbook/tkinter-dialog-windows.htm
-
好的,布莱恩。牛排在搅拌机里。我花了将近五个月的时间来研究那个!
-
@Hobbes,我在 'loop = 0' 正上方定义 'root',只是忘记过去了。
-
@Bryan,除非对话框窗口比我看到的更强大,否则我认为对于需要在一行中包含七个输入/输入框的表单来说,这不是一个可行的解决方案添加 n 行的选项。我是 Python 新手,但据我所知,例如 input() 会停止程序/循环,直到用户提供一些数据。 input() 的问题是我只看到它在 shell 中工作,而不是在 GUI 中。
标签: python-3.x tkinter while-loop user-input