Wayland 和 Kivy:如何设置窗口位置?

Posted

技术标签:

【中文标题】Wayland 和 Kivy:如何设置窗口位置?【英文标题】:Wayland and Kivy: how to set window position? 【发布时间】:2020-11-20 12:52:50 【问题描述】:

在a previous *** answer 之后,我添加了one of the basic Kivy tutorial apps 以将窗口定位在屏幕的左上角。这在 Xorg 下可以正常工作,但在 Wayland/xwayland 下不行。

在xwayland下运行时如何改变Kivy窗口位置?

代码:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.window import Window

class MyPaintWidget(Widget):
    pass

class MyPaintApp(App):
    def build(self):

        # Works under Xorg, not under Wayland
        Window.top = 0
        Window.left = 0

        return MyPaintWidget()

if __name__ == '__main__':
    MyPaintApp().run()

【问题讨论】:

Kivy 的行为可能与平台无关,我猜想 SDL2 后端无法在 Wayland 下做某事。大概您正在使用您希望侦听并处理窗口位置事件的 Wayland 合成器? 我使用的是 Weston,是的。但更深入地了解整个 Wayland 的事情,似乎使用 Cage 来做这件事可能更有意义。试图看看这是否符合要求(它还很年轻......) 如果您想要的是信息亭模式类型的东西,那将是有道理的。我可能还认为尝试最大化窗口值得一试,即使没有定位,也可以实现此代码路径。 【参考方案1】:

Kivy 确实支持 Wayland,但它可能没有被编译。见setup.py。另请注意,这也需要编译 SDL2 支持:

# change both to "True"
c_options['use_wayland'] = False
c_options['use_sdl2'] = False

【讨论】:

以上是关于Wayland 和 Kivy:如何设置窗口位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Wayland 中设置窗口的 x,y 坐标?

Kivy - 如何根据显示大小设置窗口大小?

Config 设置窗口大小 Kivy 的最小值和最大值

如何在任务栏中将图标设置为 kivy 应用程序?

QT 窗口位置怎么固定

设置kivy窗口大小不起作用