Encontrar o tamanho do espaço de trabalho (tamanho de tela menor a barra de tarefas), utilizando GTK

StackOverflow https://stackoverflow.com/questions/502282

  •  20-08-2019
  •  | 
  •  

Pergunta

Como você cria uma janela principal que preenche todo o desktop sem cobrir (ou ser coberto por) na barra de tarefas e sem ser maximizada ? Posso encontrar o tamanho de tela inteira com e definir a janela principal em conformidade com o seguinte:

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

mas a parte inferior da janela é coberto pela barra de tarefas.

Foi útil?

Solução

Você está totalmente à mercê do seu gerenciador de janelas para isso, e a questão-chave aqui é:

sem ser maximizada

Assim, ficamos com uma série de hacks, porque, basicamente, maximização e redimensionamento são duas coisas separadas, de modo que você pode ser capaz de se lembrar onde estava quando é unmaximized.

Então, antes de mostrar-lhe este hack hediondo, exorto-vos a considerar o uso de maximização adequada e apenas ser feliz com ele.

Então aqui vai:

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

Outras dicas

Você quer dizer fazer a janela fullscreen ?

Gtk tem funções para fazer janelas de tela cheia e volta, consulte gtk_window_fullscreen() e gtk_window_unfullscreen() .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top