2009-02-02 9 views
5

Làm thế nào để bạn tạo ra một cửa sổ chính mà lấp đầy toàn bộ máy tính để bàn mà không bao gồm (hoặc được bao phủ bởi) các thanh tác vụmà không bị tối đa? Tôi có thể tìm thấy toàn bộ kích thước màn hình và đặt cửa sổ chính tương ứng với điều này:Tìm kích thước không gian làm việc (kích thước màn hình dưới thanh tác vụ) sử dụng GTK

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

nhưng đáy cửa sổ được bao phủ bởi thanh tác vụ.

Trả lời

9

Bạn đang hoàn toàn ở lòng thương xót của người quản lý cửa sổ của bạn cho điều này, và các vấn đề quan trọng ở đây là:

mà không bị tối đa

Vì vậy, chúng tôi là trái với một số hacks , bởi vì về cơ bản tối đa hóa và thay đổi kích thước là hai điều riêng biệt, để bạn có thể nhớ nó ở đâu khi nó không được tối đa hóa.

Vì vậy, trước khi tôi cho bạn thấy sự ghê tởm này, tôi khuyên bạn nên xem xét sử dụng tối đa hóa đúng và chỉ hài lòng với nó.

Vì vậy, ở đây đi:

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, điều này thật tuyệt vời! –

+0

Lars, cảm ơn! Đó là lời khen ngợi cao! –