提问人:Babber 提问时间:11/15/2023 最后编辑:Babber 更新时间:11/22/2023 访问量:44
Tkinter 方法 lift()、lower()、deiconify() 和 geometry() 在 Linux 上不起作用(正常或根本不起作用) 薄荷肉桂
Tkinter methods lift(), lower(), deiconify() and geometry() not working (properly or at all) on Linux Mint Cinnamon
问:
以下所有问题都适用于 Linux Mint 21 Cinnamon(基于 Ubuntu 22,使用 muffin 窗口管理器),而 Xubuntu 22 上一切正常。
请考虑 Python3 解释器中的以下步骤:
from tkinter import *
root=Tk()
然后,可以通过调用或使用窗口管理器的专用按钮来最小化小部件窗口。root.iconify()
- 问题#1:不会将窗口带回桌面,它会保持最小化。
root.deiconify()
- 一个次优的解决方法是 ,但这会改变桌面上的小部件位置及其在任务栏上的图标。
root.withdraw(); root.deiconify()
- 提示:在 Xubuntu 上,立即执行,而在 LM 上,在最小化小部件后挂起几秒钟,就好像它在等待什么一样?..
root.iconify()
root.iconify()
- 一个次优的解决方法是 ,但这会改变桌面上的小部件位置及其在任务栏上的图标。
如果您不最小化此窗口,而是将任何应用程序的另一个窗口移到其上,则将面临...
- 问题#2:不会将其提升到顶部,它隐藏在另一个窗口下方。
root.lift()
- 作为一种解决方法,可以完成这项工作,但它抢走了焦点。 不过,这可能是一个完美的解决方法。
root.focus_force(); root.lift()
root.attributes('-topmost', 1); root.attributes('-topmost', 0)
- 作为一种解决方法,可以完成这项工作,但它抢走了焦点。 不过,这可能是一个完美的解决方法。
举起它后,比方说,你想再次放下它......
问题#3:什么也做不了。在这里,我也只知道 的次优解决方法,它将焦点放在一个甚至不可见的小部件上。
root.lower()
root.focus_force(); root.lower()
问题#4:请考虑以下脚本:
from tkinter import *
root = Tk()
root.geometry('200x200-0-0')
def func():
root.geometry('-100-100')
root.geometry('-0-0')
print(root.geometry())
b = Button(root, text='push me', command=func)
b.pack()
root.mainloop()
在 Cinnamon 上,第一次按下按钮会使整个小部件向上和向左跳跃约 20 像素,随后单击按钮不会执行任何操作。尽管如此,即使它显然不存在,它也会继续打印。该示例也适用于其他坐标,但不一定是 。在 Xubuntu 上,小部件按预期保留在角落里。200x200-0-0
-0-0
我想这不是类似问题的广泛列表,至少在 Linux Mint 3 Cinnamon 上最新版本的 python3-tk (3.10.8-1~22.04~21) 是这样。我想知道问题究竟隐藏在哪里,因为这些问题都没有出现在 Xubuntu 22 上。我猜,这与不同的窗口管理器有关。
任何见解和解决方法将非常欢迎!
答: 暂无答案
评论
tkinter