我想创建一个全屏面板,在视觉上阻止访问屏幕上的所有内容(桌面,菜单,Unity面板等在Ubuntu(11.10)中),但仍然低于其他应用程序打开的窗口.
这主要是为了让笔记本电脑儿童证明.我希望孩子(4岁)可以访问一些选定的应用程序,即.gcompris,儿童游戏,礼服数学等,但不是真正的其他应用程序和设置.像自定义桌面+启动器面板,没有任何破坏,无法访问文件等.
我希望面板包含一些可以启动其他应用程序的按钮(使用subprocess.call),但是面板本身需要保留在从它启动的任何内容之下,或者使事情变得更容易,因此它保持在任何打开的全屏游戏和每个打开的窗口之下(即使面板需要重点).
Python tkinter的全屏overrideredirect(True)将是完美的(使用密码保护关闭按钮),如果不是它不允许其他应用程序出现在它上面的事实,我不确定是否可以使它保持在底部一切.
知道如何在可能的情况下改变这种行为,或任何其他工具可以让我在python或其他方面做到这一点?
编辑:其他信息:
我已经得到它几乎工作,但另一个奇怪的行为与overrideredirect(True).我可以在开始时降低()应用程序并确定它,但是当我使用overrideredirect(True)执行此操作时,应用程序将完全消失.以下非全屏测试代码:
from tkinter import *
def btn1_click():app.quit();app.destroy()
def btn2_click():app.lower()
def handler():
if tkinter.messagebox.askyesno("Quit?", "Are you sure you want to quit?"):
app.quit();app.destroy()
app = Tk()
app.title("Testing...")
app.geometry('300x100+200+100')
#app.overrideredirect(True)
#app.lower()
b1 = Button(app, text = "Exit!", width = 10, command = btn1_click);b1.pack()
b2 = Button(app, text = "Lower", width = 10, command = btn2_click);b2.pack()
app.protocol("WM_DELETE_WINDOW", handler)
app.mainloop()
Run Code Online (Sandbox Code Playgroud)
当你按原样运行它会打开新窗口并按下"向下"按钮将它发送到后面,但是如果你取消注释app.overrideredirect(True)行并按下按钮,应用程序仍将运行但不会更长时间可见.
编辑......好吧,我想我明白了:
>>>help(tkinter)
...
| overrideredirect = wm_overrideredirect(self, boolean=None)
| Instruct the window manager to ignore this widget …Run Code Online (Sandbox Code Playgroud)