【问题标题】:Always keep a widget on top of the others in tkinter在 tkinter 中始终将一个小部件放在其他小部件之上
【发布时间】:2021-03-31 08:46:32
【问题描述】:

有没有办法在 tkinter 中始终将一个小部件保持在其他小部件之上?

代码如下:

from tkinter import *

root = Tk()

button_1 = Button(root , text = "Button 1")
button_1.grid(row = 0 , column = 0)

button_2 = Button(root , text = "Button 2")
button_2.grid(row = 0 , column = 0)

mainloop()

在这里,我将button_1button_2 定位在同一行,但问题是,正如我在定义button_1 之后定义的button_2button_2 停留在button_1 之上。

我想要的是button_1 应该始终位于窗口中其他小部件的顶部。

有没有办法在 tkinter 中实现这一点?

如果有人能帮助我,那就太好了。

【问题讨论】:

  • 在 button_2 之后写 button_1
  • 如果你总是想把一个按钮放在最上面,那为什么还要定义另一个按钮
  • @vanditvasa:这只是展示我的问题的一个例子。我的实际代码不同。
  • @vanditvasa 正如我所说,最后写那个小部件
  • @Matiiss:嗯,我想在未来定义什么新的小部件?

标签: python tkinter topmost


【解决方案1】:

使用.lift()

from tkinter import *

root = Tk()

button_1 = Button(root , text = "Button 1")
button_1.grid(row = 0 , column = 0)

button_2 = Button(root , text = "Button 2")
button_2.grid(row = 0 , column = 0)

button_1.lift()

mainloop()

【讨论】:

  • 谢谢! .lift() 方法有效,但应在定义button_2 后最后添加。
  • 就像任何人在未来看到这个的注释一样:.lift 不适用于tk.Canvas 小部件。对于tk.Canvas,请使用<tk.Canvas>.tk.call("raise", <tk.Canvas>._w, None)
  • @Lenovo360 是的,必须在定义所有小部件后明确定义。
  • @TheLizzard for tk.Canvas 我们可以使用canvas.tag_raise(widget)
  • @TheLizzard 很抱歉,因为我不知道当前的语法 bcoz 上次使用它是 4 年前,当时它工作得非常好。
猜你喜欢
  • 1970-01-01
  • 2015-03-24
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多