2013-04-12 12 views
21

Chcę zainicjować okno jako zmaksymalizowane, ale nie mogę dowiedzieć się, jak to zrobić. Używam Pythona 3.3 i Tkinter 8.6 na Windows 7. Myślę, że odpowiedź jest po prostu tutaj: http://www.tcl.tk/man/tcl/TkCmd/wm.htm#m8 ale nie mam pojęcia, jak wprowadzić go do mojego skryptu Pythonapyton tkinter zmaksymalizować okno

Poza tym, trzeba uzyskać szerokość i wysokość okna (zarówno zmaksymalizowane, jak i jeśli użytkownik ponownie je skaluje), ale domyślam się, że mogę to sam znaleźć.

Odpowiedz

24

Jeśli chcesz ustawić atrybut fullscreen true, to jest tak proste, jak:

root = Tk() 
root.attributes('-fullscreen', True) 

jednak nie pokazuje pasek tytułowy. Jeśli chcesz zachować to widoczne, można zmienić rozmiar elementu Tk z metodą geometry():

root = Tk() 
w, h = root.winfo_screenwidth(), root.winfo_screenheight() 
root.geometry("%dx%d+0+0" % (w, h)) 

Z winfo_width() i winfo_height() można uzyskać szerokość i wysokość lub okna, a także można powiązać obsługi zdarzeń zdarzenie <Configure>:

def resize(event): 
    print("New size is: {}x{}".format(event.width, event.height)) 

root.bind("<Configure>", resize) 
+1

jest także 'root.overrideredirect (True)' (usuwa pasek tytułowy) Ten – jfs

+0

działa tak długo, jak mam jeden monitor.Jak mogę zmienić kod, aby zmaksymalizować tylko jeden monitor, a nie cały wirtualny pulpit? – Paladin

+0

Nieważne, wydaje się, że jest to specyficzny problem cygwin. – Paladin

18

Aby pokazać zmaksymalizowane okno z paskiem tytułu obsługi 'powiększony' atrybut

root = Tk() 
root.attributes('-zoomed', True) 
+1

Prawdopodobnie działa tylko w systemie Windows. Można również powiedzieć: 'root.wm_state ('zoomed')' – jfs

+1

Nie działa tylko w systemie Windows. Działa całkiem dobrze na Xubuntu. – Shule

+1

Działa na Ubuntu 14.04 - J.F lepiej sprawdzić się następnym razem. –

29

Można to zrobić dzwoniąc

root.state('zoomed') 
+0

Działa jak urok, to jedyny, który naprawdę działa dla mnie –

4

pierwsze podejście jest użycie root.state('zoomed'), ale nie ma być powszechnie dostępne. Działa na Windowsie i na moim komputerze Ubuntu. Jednak pod moją maszyną Arch nie ma.


Drugim jest najpierw uzyskać maxSize, a następnie ustaw geometrię ręcznie, jak:

m = root.maxsize() 
root.geometry('{}x{}+0+0'.format(*m)) 

To działa na większości komputerów, ale nie na wszystkich. Na przykład pod moim Arch. maxsize() zwraca (1425, 870), podczas gdy rzeczywistą geometrią zmaksymalizowanego okna powinno być (1440, 848). Więc nie mogłeś na nim polegać.


Po trzecie, moim zdaniem najlepszym rozwiązaniem jest użycie root.wm_attributes('-zoomed', 1). Jest powszechnie dostępny i wydaje się najbezpieczniejszy. Na niektórych maszynach można było powiększać tylko o szerokość lub wysokość, ale w porównaniu z poprzednią metodą, ten byłby nigdy nie dałby okna częściowo po stronie ekranu.

Wreszcie, jeśli chcesz pełnoekranowe, nie tylko powiększone okno, użyj root.wm_attributes('-fullscreen', 1). Zapewnia natywne łącze do zachowania menedżera okien, dzięki czemu działa znacznie lepiej niż gra z overrideredirect i ręczne ustawianie geometrii (co na niektórych platformach może prowadzić do niezarządzanego okna, które może być zamknięte tylko przez własny interfejs lub zabicie procesu, wygrał „t pokazać na pasku zadań, etc ...)

1

najbardziej pythonic jest” root.wm_state('zoomed'), jak wspomniano przez @JFSebastian