Maison >développement back-end >Tutoriel Python >Comment puis-je gérer efficacement la géométrie dans les applications GUI Tkinter ?

Comment puis-je gérer efficacement la géométrie dans les applications GUI Tkinter ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-05 11:48:10768parcourir

How Can I Effectively Manage Geometry in Tkinter GUI Applications?

Tkinter - Gestion de la géométrie

Introduction

De nombreuses questions concernant Tkinter se concentrent sur l'organisation de l'interface graphique plutôt que sur la résolution des erreurs. Cet article vise à fournir aux débutants un aperçu complet du système de gestion de la géométrie de Tkinter.

Concepts de base

La gestion de la géométrie de Tkinter se caractérise par le principe suivant :

A la fenêtre de niveau supérieur apparaît à l'écran dans sa taille naturelle, déterminée par ses widgets et sa géométrie managers.

Toplevels

Considérations clés pour les toplevels :

  • wm_geometry : Taille et position sur l'écran
  • wm_minsize et wm_maxsize : Limites minimales et maximales
  • wm_resizing : Possibilité de redimensionner la fenêtre
  • wm_attributes : Attributs tels que le plus haut ou fullscreen
  • pack_propagate et grid_propagate : Ignorer la largeur et la hauteur demandées des enfants

Organiser les enfants

Gestionnaires de géométrie pour organiser enfants :

  • Packer : Dispose les enfants le long des bords du widget principal.

    • Couramment utilisé pour organiser rapidement un quelques widgets côte à côte.
  • Placer : Spécifie la taille et l'emplacement exacts des enfants dans la fenêtre principale.

    • Convient aux applications sur une seule feuille ou à la définition d'un arrière-plan images.
  • Grille : Organise les enfants en lignes et en colonnes dans la fenêtre principale.

    • Idéal pour les applications plus complexes avec plusieurs widgets.

Remarque importante :Ne mélangez jamais la grille et le pack dans la même fenêtre principale.

Le plus important Caractéristiques

Emballeur :

  • remplissage : Étirez l'esclave horizontalement, verticalement ou les deux.
  • développer : Développez les esclaves pour en consommer davantage espace.
  • côté : Spécifiez de quel côté du maître les esclaves seront emballés.
  • ancre : Positionnez chaque esclave dans son colis.

Placer :

  • relheight : Définissez la hauteur par rapport au maître.
  • relwidth : Définit la largeur par rapport à la master.
  • relx: Positionnez le bord gauche de l'esclave par rapport au maître.
  • rely: Positionnez le bord supérieur de l'esclave par rapport au maître.

Grille :

  • columnspan : Occupe plusieurs colonnes dans la grille.
  • rowspan : Occupe plusieurs lignes dans la grille.
  • sticky : Positionnez ou étirez l'esclave dans son cell.
  • grid_remove : Supprimer les options de configuration d'une fenêtre.

Documentation et exemple :

Se référer à la documentation officielle de Tkinter et l'exemple fourni ci-dessous pour une compréhension plus approfondie.

import tkinter as tk

# Create a root window
root = tk.Tk()

# Main frame
holderframe = tk.Frame(root, bg='red')
holderframe.pack()

# Top display
display = tk.Frame(holderframe, width=600, height=25, bg='green')
display.grid(column=0, row=0, columnspan=3)
display.pack_propagate(0)

# Left-side widgets
b = tk.Button(display, width=10, text='b')
b.pack(side='left')
b1 = tk.Button(display, width=10, text='b1')
b1.pack(side='left')

# Right-side widget
b2 = tk.Button(display, width=20, text='b2')
b2.pack(side='right')

# Center widget with filling and expansion
l = tk.Label(display, text='My_Layout', bg='grey')
l.pack(fill='both', expand=1)

# Other frames and widgets
# ...

# Main loop
root.mainloop()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn