Ubuntu 21.10 xrdp 上的远程桌面时 tkinter 使用 sudo 行为不当

tkinter misbehave with sudo when remote desktop on Ubuntu 21.10 xrdp

设置

我有一个 python3 使用 tkinter 创建图形用户界面的应用程序。它 运行s 在 Raspberry Pi 4 运行ning Ubuntu 21.10。我使用远程桌面与 xrdp 客户端连接。我成功连接到 Ubuntu 桌面,但看不到桌面图标。

Link to the application

问题

当我以 root 权限启动应用程序时,tkinter 在显示上变得混乱并且无法创建 GUI。

sudo python3 /home/ubuntu/Robotics/QuadrupedRobot/StanfordQuadruped/calibrate_tool.py

当我 运行 应用程序作为用户时,tkinter 能够创建 GUI,但现在应用程序没有权限与根驱动程序交互

python3 /home/ubuntu/Robotics/QuadrupedRobot/StanfordQuadruped/calibrate_tool.py

问题

有没有办法让 tkinter 在远程桌面上以 root 权限工作,或者在不授予完整应用程序 root 权限的情况下写入 root 文件?

我的设置有问题吗?

解决方案

这是一个 X Windows 安全问题,阻止 sudo 用户访问登录用户创建的显示。如果您不担心本地网络的安全性,那么 运行 执行命令 'xhost +' 将禁用 X Windows 显示器上的所有安全性并允许 sudo 用户访问显示器。

    pi@pi4desktop:~ $ xhost +
    access control disabled, clients can connect from any host

然后你应该能够运行你的 tkinter 应用程序使用 sudo。