2009-02-02 7 views
5

Jak można utworzyć główne okno, które wypełnia cały pulpit bez pokrycia (lub są objęte) paska zadań i nie będąc zmaksymalizowane? Mogę znaleźć cały rozmiar ekranu i odpowiednio ustawić główne okno:Znalezienie rozmiaru obszaru roboczego (mniejszy rozmiar ekranu paska zadań) przy użyciu GTK

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

, ale dolna część okna jest zasłonięta paskiem zadań.

Odpowiedz

9

Jesteś całkowicie na łaskę swojego menedżera okien dla tego, a kluczową kwestią jest:

bez zmaksymalizowane

Więc jesteśmy w lewo z kilku hacki , ponieważ zasadniczo maksymalizacja i zmiana rozmiaru są dwiema osobnymi rzeczami, abyś mógł zapamiętać, gdzie był, gdy jest nieosaksymalizowany.

Zanim pokażę ci ten ohydny hack, zachęcam cię do rozważenia użycia odpowiedniej maksymalizacji i po prostu ciesz się z tego.

Więc tu idzie:

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() 
+2

Ali, to jest piękne straszne! –

+0

Lars, dzięki! To jest wielka pochwała! –

Powiązane problemy