【问题标题】:tkinter python switching widgetstkinter python 切换小部件
【发布时间】:2014-12-22 18:05:32
【问题描述】:
from tkinter import *
from time import sleep
root = Tk()
l = Label ( root , text = "bla" )
b = Button ( root , text = "python je glup" )

def glupsam ():
   b.grid_forget()
   b.update_idletasks()
   l.grid ( row = 0 , column = 0 )
   l.update_idletasks()
   sleep ( 2 )
   l.grid_forget()
   l.update_idletasks()
   b.grid(row = 0 , column = 0)

b.grid( row = 0 , column = 0 )
b.configure ( command = glupsam )

root.mainloop()

我是 python 和 tkinter 的新手。 为什么每次按下按钮时这段代码都不会在网格 (0, 0) 上切换标签和按钮,但只是第一次

【问题讨论】:

  • 我不知道你到底想做什么,但是 Tkinter 不能很好地与sleep 配合使用——当你睡觉时,窗口会冻结,直到你的函数完成执行。您可能需要重构代码以改用Tk.after
  • 谢谢凯文。我对睡眠一无所知。它解决了我所有的问题:)

标签: python button tkinter labels


【解决方案1】:

尝试使用after 来恢复您的按钮,而不是使用sleep

from tkinter import *
from time import sleep
root = Tk()
l = Label ( root , text = "bla" )
b = Button ( root , text = "python je glup" )

def glupsam ():
    b.grid_forget()
    b.update_idletasks()
    l.grid ( row = 0 , column = 0 )
    l.update_idletasks()
    def f():
        l.grid_forget()
        l.update_idletasks()
        b.grid(row = 0 , column = 0)
    root.after(2000, f)

b.grid( row = 0 , column = 0 )
b.configure ( command = glupsam )

root.mainloop()

【讨论】:

  • 您不需要在解决方案中的任何地方调用update_idletasks
猜你喜欢
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 2019-01-03
  • 2014-12-17
相关资源
最近更新 更多