Python混乱:设置显示?

2024-06-16 12:20:08 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在Python混乱中设置X11的显示?我正在尝试将其设置为XSCREENSAVER_窗口。我尝试过导入clair.x11并使用set\u display(),但这似乎不是正确的命令。有人知道这样做的正确方法吗?在


Tags: 方法命令displaysetx11xscreensaverclair
1条回答
网友
1楼 · 发布于 2024-06-16 12:20:08

在四处搜索时,我发现了this thread,通过查看头像图片,我假设这是你的线程;)我将发布由LemursDontExist给出的代码,这样你就可以把它们都放在一个整体中了。在


简要说明:在xwindows中,要使程序成为屏幕保护程序,程序会检查它是否以屏幕保护程序的形式运行,这意味着它是否被窗口系统调用。这是通过检查环境变量DISPLAY是否设置为XSCREENSAVER_WINDOW来完成的。在

在这种情况下,程序需要全屏显示并对某些事件做出反应。下面的代码就是这样做的。设置此变量是通过xscreensaver应用程序完成的,您不必自己设置。在

缺少的是clutter-gtkpython绑定。在当前的Ubuntu中,包名是gir1.2-clutter-gtk-0.10。这样,就可以将自定义窗口类与杂波API一起使用。在


class GsThemeWindow(gtk.Window):
    __gtype_name__ = 'GsThemeWindow'

def __init__(self):
    super(GsThemeWindow, self).__init__()
    self.connect("destroy", gtk.main_quit)

def do_realize(self):
    ident = os.environ.get('XSCREENSAVER_WINDOW')
    if not ident is None:
        self.window = gtk.gdk.window_foreign_new(int(ident, 16))
        self.window.set_events(gtk.gdk.EXPOSURE_MASK |
                               gtk.gdk.STRUCTURE_MASK)
        x, y, w, h, depth = self.window.get_geometry()
        self.size_allocate(gtk.gdk.Rectangle(x, y, w, h))
        self.set_default_size(w, h)
        self.set_decorated(False)
    else:
        self.window = gtk.gdk.Window(
            self.get_parent_window(),
            width=self.allocation.width,
            height=self.allocation.height,
            window_type=gtk.gdk.WINDOW_TOPLEVEL,
            wclass=gtk.gdk.INPUT_OUTPUT,
            event_mask=self.get_events() | gtk.gdk.EXPOSURE_MASK)
    self.window.set_user_data(self)
    self.style.attach(self.window)
    self.set_flags(self.flags() | gtk.REALIZED)

有关如何在python中使用杂波的简短概述(它已经改变了很多),请参见this example

相关问题 更多 >