Tkinter Python maximise window
je veux initialiser une fenêtre maximisée, mais je ne trouve pas comment le faire. J'utilise python 3.3 et Tkinter 8.6 sur windows 7. Je suppose que la réponse est juste ici: http://www.tcl.tk/man/tcl/TkCmd/wm.htm#m8 mais je n'ai aucune idée de comment le saisir dans mon script python
en outre, je dois obtenir la largeur et la hauteur de la fenêtre (à la fois comme maximisé et si l'utilisateur re-échelle il après), mais je suppose que je peux juste le découvrir moi-même.
5 réponses
si vous voulez définir L'attribut fullscreen à True, c'est aussi simple que:
root = Tk()
root.attributes('-fullscreen', True)
cependant, il ne montre pas la barre de titre. Si vous voulez le garder visible, vous pouvez redimensionner les Savoirs traditionnels élément geometry()
méthode:
root = Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.geometry("%dx%d+0+0" % (w, h))
winfo_width()
et winfo_height()
vous pouvez obtenir la largeur et la hauteur de la fenêtre, et vous pouvez également lier un gestionnaire d'événements pour l' <Configure>
événement:
def resize(event):
print("New size is: {}x{}".format(event.width, event.height))
root.bind("<Configure>", resize)
pour afficher la fenêtre maximisée avec la barre de titre utilisez l'attribut 'zoomed'
root = Tk()
root.attributes('-zoomed', True)
la première approche est d'utiliser le root.state('zoomed')
, mais n'est pas censé être accessible à tous. Il fonctionne sur Windows, et sur ma machine Ubuntu. Cependant, sous ma machine à Arc, ce n'est pas le cas.
la seconde est de commencer par maxsize, puis définir la géométrie manuellement, comme:
m = root.maxsize()
root.geometry('{}x{}+0+0'.format(*m))
Cela fonctionne sur la plupart des machines, mais pas sur toutes. Par exemple, sous mon arc le maxsize()
retourne (1425, 870)
, alors que la géométrie réelle de la fenêtre agrandie doit être (1440, 848)
. Donc, vous ne pouviez pas compter dessus.
Et la troisième, à mon avis, la meilleure approche est d'utiliser root.wm_attributes('-zoomed', 1)
. Il est disponible partout et semble être le plus sûr. Sur certaines machines, le zoom ne pouvait se faire que par la largeur ou par la hauteur, mais par rapport à la méthode précédente, celle-ci serait jamais vous donne une fenêtre partiellement à l'extérieur de l'écran.
enfin, si vous voulez un plein écran, pas seulement une fenêtre zoomée, utilisez root.wm_attributes('-fullscreen', 1)
. Il fournit un lien natif vers le comportement du gestionnaire de fenêtres, donc travailler beaucoup mieux, que de jouer avec overrideredirect
et le réglage de la géométrie à la main (ce qui sur certaines plateformes pourrait conduire à une fenêtre non gérée, qui pourrait être fermée seulement par sa propre interface ou en tuant le processus, ne sera pas affiché sur la barre des tâches, etc...)
La plupart des pythonic est" root.wm_state('zoomed')
, comme mentionné par @J. F. Sebastian