首页 > 解决方案 > 如何在 tkinter 窗口中只接受用户输入一分钟

问题描述

import time
from tkinter import *
from tkinter.ttk import *
window = Tk()
e = Entry(window, width=100)
e.pack()
player2 = ""

def get_text():
    e.config(state='disabled')
    player2 = e.get()
    return player2

Button(window, text="done", command=get_text).pack()

t = 60
for x in range(t):
    t = t -1
    time.sleep(1)

if t == 0:
    Label(window, text="Times up").pack()
    e.config(state='disabled')
    player2 = e.get()
Label(window, text=player2).pack()
window.mainloop()

这是我的代码,但它并没有真正起作用。我想创建一个条目并让用户只输入一分钟的单词,除非按下完成按钮,否则条目值存储在一个名为 player2 的变量中。

标签: pythontkinter

解决方案


看看PEP8。要解决您的问题,您需要tkinter的after方法,不鼓励其他所有方法。另请参阅为什么需要将构造与几何方法分开。还有为什么要避免通配符导入

from tkinter import *

def get_text():
    e.config(state='disabled')
    my_label.configure(text=e.get())

def after_time():
    my_label.configure(text="Times up")#configure instead of new
    e.config(state='disabled')
    
window = Tk()

e = Entry(window, width=100)
e.pack()

my_button = Button(window, text="done", command=get_text)
my_button.pack()

my_label = Label(window, text='..waiting for username..') #seperate construction from geometry
my_label.pack()

window.after(1000, after_time) #after(ms,function)
window.mainloop()

推荐阅读