Trovare le dimensioni dello spazio di lavoro (dimensioni dello schermo meno la barra delle applicazioni) utilizzando GTK
Domanda
Come si crea una finestra principale che riempia l'intero desktop senza coprire (o essere coperto da) la barra delle applicazioni E senza essere massimizzato?Posso trovare l'intera dimensione dello schermo e impostare la finestra principale di conseguenza con questo:
window = gtk.Window()
screen = window.get_screen()
window.resize(screen.get_width(), screen.get_height())
ma la parte inferiore della finestra è coperta dalla barra delle attività.
Soluzione
Sei totalmente alla mercé del tuo window manager per questo, e la questione chiave qui è:
senza essere massimizzato
Quindi ci restano una serie di hack, perché fondamentalmente la massimizzazione e il ridimensionamento sono due cose separate, in modo che tu possa essere in grado di ricordare dove si trovava quando non è ingrandito.
Quindi, prima di mostrarti questo orribile trucchetto, ti esorto a considerare l'utilizzo di una corretta massimizzazione e ad accontentarti.
Quindi ecco qui:
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()
Altri suggerimenti
Do you mean making the window fullscreen?
Gtk has functions for making windows fullscreen and back, see gtk_window_fullscreen()
and gtk_window_unfullscreen()
.