Tkinter/Canvas-based Raspberry Pi 类似信息亭的程序
Tkinter/Canvas-based kiosk-like program for Raspberry Pi
我想要 运行 Python 在 Raspberry Pi(或者就此而言,任何 Unix/Linux-based 计算机)上有效地将整个屏幕变成canvas 并允许我在上面实时绘制文本和图形对象。我理想地希望它也能自动隐藏桌面上的所有其他内容并消除 window 框架和任务栏,类似于在全屏模式下播放视频(使用 ESC 退出)。
我目前的研究表明 Tkinter/Canvas 是最简单的解决方案。但是,虽然我已经在网上找到了完成上述内容的 部分 的示例,但我无法将这些部分组合成可以完成所有工作的形式。我之前没有使用 Tkinter 的经验也无济于事。
如果有人能指出我所描述设置的最小工作示例,我将不胜感激。
最小的例子。它创建全屏 window,无边框,始终在顶部
所以你不能切换到其他 window,即。控制台终止程序。
您可以按 ESC
关闭它,但如果 ESC
不起作用,我添加了 5 秒后关闭的功能:)
全屏绘制红色椭圆。
#!/usr/bin/env python3
import tkinter as tk
# --- functions ---
def on_escape(event=None):
print("escaped")
root.destroy()
# --- main ---
root = tk.Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
# --- fullscreen ---
#root.overrideredirect(True) # sometimes it is needed to toggle fullscreen
# but then window doesn't get events from system
#root.overrideredirect(False) # so you have to set it back
root.attributes("-fullscreen", True) # run fullscreen
root.wm_attributes("-topmost", True) # keep on top
#root.focus_set() # set focus on window
# --- closing methods ---
# close window with key `ESC`
root.bind("<Escape>", on_escape)
# close window after 5s if `ESC` will not work
root.after(5000, root.destroy)
# --- canvas ---
canvas = tk.Canvas(root)
canvas.pack(fill='both', expand=True)
canvas.create_oval((0, 0, screen_width, screen_height), fill='red', outline='')
# --- start ---
root.mainloop()
我想要 运行 Python 在 Raspberry Pi(或者就此而言,任何 Unix/Linux-based 计算机)上有效地将整个屏幕变成canvas 并允许我在上面实时绘制文本和图形对象。我理想地希望它也能自动隐藏桌面上的所有其他内容并消除 window 框架和任务栏,类似于在全屏模式下播放视频(使用 ESC 退出)。
我目前的研究表明 Tkinter/Canvas 是最简单的解决方案。但是,虽然我已经在网上找到了完成上述内容的 部分 的示例,但我无法将这些部分组合成可以完成所有工作的形式。我之前没有使用 Tkinter 的经验也无济于事。
如果有人能指出我所描述设置的最小工作示例,我将不胜感激。
最小的例子。它创建全屏 window,无边框,始终在顶部
所以你不能切换到其他 window,即。控制台终止程序。
您可以按 ESC
关闭它,但如果 ESC
不起作用,我添加了 5 秒后关闭的功能:)
全屏绘制红色椭圆。
#!/usr/bin/env python3
import tkinter as tk
# --- functions ---
def on_escape(event=None):
print("escaped")
root.destroy()
# --- main ---
root = tk.Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
# --- fullscreen ---
#root.overrideredirect(True) # sometimes it is needed to toggle fullscreen
# but then window doesn't get events from system
#root.overrideredirect(False) # so you have to set it back
root.attributes("-fullscreen", True) # run fullscreen
root.wm_attributes("-topmost", True) # keep on top
#root.focus_set() # set focus on window
# --- closing methods ---
# close window with key `ESC`
root.bind("<Escape>", on_escape)
# close window after 5s if `ESC` will not work
root.after(5000, root.destroy)
# --- canvas ---
canvas = tk.Canvas(root)
canvas.pack(fill='both', expand=True)
canvas.create_oval((0, 0, screen_width, screen_height), fill='red', outline='')
# --- start ---
root.mainloop()