J'utilise des étiquettes pour afficher des données. Cependant, j'ai tellement d'étiquettes placées l'une en dessous de l'autre que je ne peux pas les mettre toutes dans la même fenêtre. Je souhaite utiliser une barre de défilement pour faire défiler les étiquettes. Cependant, comme je l'ai lu, ce n'est pas si simple. Si je comprends bien, mon meilleur pari est d'utiliser un cadre pour rassembler toutes mes étiquettes, puis insérer le cadre dans une toile, qui peut ensuite être utilisé en parallèle avec la barre de défilement, même si j'ai du mal à le faire. La fonction que j'utilise pour créer mes étiquettes estComment utiliser place dans un cadre incorporé dans une toile?
def Tab(root, y):
#Print the team
playerTeam = Label(root, bg = "white", text = "Hello")
playerTeam.config(height = 1, width = 13)
playerTeam.place(x=20,y=y)
J'ai essayé d'ajouter le code suivant en même temps que ma fonction
def onFrameConfigure(canvas):
'''Reset the scroll region to encompass the inner frame'''
canvas.configure(scrollregion=canvas.bbox("all"))
root = tk.Tk()
root.geometry("400x400")
canvas = tk.Canvas(root, borderwidth=0, background="#ffffff")
frame = tk.Frame(canvas, background="#ffffff")
vsb = tk.Scrollbar(root, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set)
vsb.pack(side="right", fill="y")
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((4,4), window=frame, anchor="nw")
frame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas))
Tab(frame, 20)
Lorsque couru, une fenêtre vide est produit. Cependant, lorsque .grid est utilisé à la place de .place, Tab() fonctionne correctement et l'étiquette est affichée sur la fenêtre. Bien que, lorsque j'appelle Tab() plusieurs fois, les étiquettes quittent la fenêtre et la possibilité de défiler vers le bas n'est pas disponible.
Comment faire pour que la fonction .place fonctionne correctement. Et deuxièmement comment puis-je faire fonctionner la barre de défilement correctement. Merci
Merci Bryan, mais je ne peux vraiment pas voir les gestionnaires de géométrie de la grille et de l'emballage qui fonctionnent bien avec ma conception de l'interface. Mais en plus, pourquoi la barre de défilement ne fonctionnera pas dans l'exemple que j'ai donné? –
Les barres de défilement ne fonctionnent pas car 'scrollregion' n'est pas défini, car le cadre est petit. Définissez 'scrollregion' sur une valeur plus grande que le canevas et les barres de défilement fonctionneront. Je serais prêt à parier qu'il n'y a presque pas de design d'interface que vous pouvez trouver qui ne puisse fonctionner avec 'pack' ou' grid', sauf pour un design qui demande à l'utilisateur de pouvoir interactivement déplacer des widgets. –
Ok merci. Je serais en mesure d'utiliser les méthodes pack/grille, mais pour le moment j'ai eu du mal à obtenir les étiquettes où je les veux sans que les étiquettes soient trop rapprochées. –