2009-02-02 5 views
5

Wie erstellen Sie ein Hauptfenster, das den gesamten Desktop ohne dabei (oder wird abgedeckt durch) in der Taskleiste und ohne maximiert wird füllt? Ich kann die gesamte Bildschirmgröße mit finden und das Hauptfenster entsprechend mit diesem Satz:Suche nach der Größe des Arbeitsbereichs (Bildschirmgröße weniger in der Taskleiste) mit GTK

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

aber die Unterseite des Fensters wird von der Taskleiste abgedeckt.

Antwort

9

Sie sind völlig auf die Gnade der Fenster-Manager für diese und die zentrale Frage ist hier:

ohne maximiert wird

So sind wir mit einer Reihe von Hacks links , weil im Grunde Maximierung und Größenänderung zwei getrennte Dinge sind, damit Sie sich erinnern können, wo es war, wenn es nicht maximiert ist.

Bevor ich Ihnen diesen abscheulichen Hack zeige, rate ich Ihnen dringend, eine angemessene Maximierung in Erwägung zu ziehen und einfach damit zufrieden zu sein.

So, hier geht:

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, das ist wunderschön schrecklich! –

+0

Lars, danke! Das ist ein großes Lob! –