用于Raspberry Pi的Tkinter / Canvas-based kiosk-like程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于Raspberry Pi的Tkinter / Canvas-based kiosk-like程序相关的知识,希望对你有一定的参考价值。

我想在Raspberry Pi(或者,就此而言,任何基于Unix / Linux的计算机)上运行Python程序,它可以有效地将整个屏幕变成画布,并允许我实时绘制文本和图形对象。我理想地希望这也能自动隐藏桌面上的其他所有内容并消除窗口框架和任务栏,类似于以全屏模式播放视频(使用ESC退出)。

到目前为止,我的研究表明Tkinter / Canvas将是最简单的解决方案。但是,虽然我在网上找到了完成我上面描述的部分内容的例子,但我还是无法将这些部分组合在一起,形成一切。我没有Tkinter之前的经验也无济于事。

如果有人能指出我所描述的设置的最小工作示例,我将非常感激。

答案

最小的例子。它创建全屏窗口,无边框,始终在顶部 所以你不能切换到其他窗口,即。控制台杀死程序。

您可以通过按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()

以上是关于用于Raspberry Pi的Tkinter / Canvas-based kiosk-like程序的主要内容,如果未能解决你的问题,请参考以下文章

Tkinter 滑块和 Raspberry Pi 4 GPIO 接口

将串行从 Raspberry 传递到 Arduino USB HID

python 用于控制Raspberry Pi汽车的Python脚本。

Adafruit_DHT不适用于python 3 Raspberry Pi 3 B.

样式表元素适用于 Windows,但不适用于 raspberry-pi

python 基于Python Bottle的简单应用程序,用于控制Raspberry Pi相机模块