6

如何创建一个填充整个桌面而不覆盖(或被覆盖)任务栏且不被最大化的主窗口?我可以找到整个屏幕尺寸并相应地设置主窗口:

window = gtk.Window()
screen = window.get_screen()
window.resize(screen.get_width(), screen.get_height())

但窗口底部被任务栏覆盖。

4

2 回答 2

9

为此,您完全受制于窗口管理器,这里的关键问题是:

没有被最大化

所以我们留下了一些技巧,因为基本上最大化和调整大小是两个独立的事情,以便您能够记住它在未最大化时的位置。

因此,在我向您展示这个可怕的 hack 之前,我敦促您考虑使用适当的最大化并对此感到满意。

所以这里是:

import gtk

# Even I am ashamed by this
# Set up a one-time signal handler to detect size changes
def _on_size_req(win, req):
    x, y, w, h = win.get_allocation()
    print x, y, w, h   # just to prove to you its working
    win.disconnect(win.connection_id)
    win.unmaximize()
    win.window.move_resize(x, y, w, h)

# Create the window, connect the signal, then maximise it
w = gtk.Window()
w.show_all()
w.connection_id = w.connect('size-request', _on_size_req)
# Maximizing will fire the signal handler just once,
# unmaximize, and then resize to the previously set size for maximization.
w.maximize()

# run this monstrosity
gtk.main()
于 2009-02-03T18:09:21.253 回答
1

你的意思是让窗口全屏

Gtk 具有使窗口全屏和返回的功能,请参阅gtk_window_fullscreen()gtk_window_unfullscreen().

于 2011-06-29T13:41:20.163 回答