Das Finden der Arbeitsbereich Größe (Bildschirmgröße weniger in der Taskleiste) mit GTK
Frage
Wie erstellen Sie ein Hauptfenster, das den gesamten Bildschirm ausfüllt ohne dabei (oder abgedeckt wird), um die Taskleiste und ohne maximiert werden ? Ich kann mit der gesamten Bildschirmgröße finden und das Hauptfensters entsprechend mit diesem Satz:
window = gtk.Window()
screen = window.get_screen()
window.resize(screen.get_width(), screen.get_height())
aber der untere Rand des Fensters wird von der Taskleiste abgedeckt.
Lösung
Sie sind völlig auf die Gnade der Fenster-Manager für diese und die zentrale Frage ist hier:
ohne maximiert werden
So haben wir mit einer Reihe von Hacks bleiben, weil im Grunde Maximierung und Redimensionierung sind zwei getrennte Dinge, damit Sie vielleicht in der Lage zu erinnern, wo es war, als es unmaximized ist.
Also, bevor ich Ihnen diese abscheulichen Hack zeigen, ich fordere Sie richtige Maximierung zu prüfen, verwenden und nur mit ihm glücklich 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()
Andere Tipps
Haben Sie das Fenster meinen, dass Vollbild
Gtk hat Funktionen für Fenster Vollbild und zurück finden Sie unter gtk_window_fullscreen()
und gtk_window_unfullscreen()
.