zone de liste déroulante dans une grille à l'aide tkinter
Je suis nouveau sur ce lieu et tkinter. Je suis coincé à faire une zone de liste déroulante ou de la toile. J'ai essayé les deux widgets. Au sein de cette zone de liste ou sur la toile, j'ai plusieurs entrée d'étiquette et de widgets. Le point d'origine est R0,C0. J'ai utilisé ligne/columnconfigure pour étirer la zone de liste ou de la toile.
Dans la fenêtre principale, j'ai eu 4 boutons sur la ligne quatre colonnes quatre (0,4->4,4). J'ai placé la barre de défilement sur la colonne 5. J'ai tenté d'utiliser la méthode de la grille. La question que je vais avoir est de rendre la barre de défilement fonctionnelle.
Remarque: l'activation du mainframe dans une classe n'est qu'une des façons que j'ai essayé. L'emballage de la barre de défilement sur la droite a travaillé, avec le listbox/toile paniers sur la gauche. Toutefois, la zone de liste/toile widget que la barre de défilement est commandé de ne pas faire défiler la zone de liste/toile. En outre, l'ajout de nombreuses zones d'entrée n'est pas la cause de la listbox/toile pour faire défiler. De l'aide s'il vous plaît.
from tkinter import *
from tkinter.ttk import *
Style().configure("B.TFrame", relief="flat",
background="blue")
Style().configure("R.TFrame", relief="flat",
background="red")
Style().configure("R.TLabel", background="red")
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master, style="B.TFrame")
self.grid(sticky=N+S+E+W)
self.mainframe()
def mainframe(self):
top=self.winfo_toplevel()
self.menuBar = Menu(top)
top["menu"] = self.menuBar
self.subMenu = Menu(self.menuBar, tearoff=0)
self.subMenu2 = Menu(self.menuBar, tearoff=0)
self.menuBar.add_cascade(label="File", menu=self.subMenu)
self.menuBar.add_cascade(label="About", menu=self.subMenu2)
self.subMenu.add_command(label="Open")
self.subMenu.add_command(label="Save")
self.subMenu.add_command(label="Exit")
self.subMenu2.add_command(label="About")
self.subMenu2.add_command(label="Help")
self.data = Listbox (self, bg='red')
scrollbar = Scrollbar(self.data, orient=VERTICAL)
self.add = Button(self, text="")
self.remove = Button(self, text="")
self.run = Button(self, text="")
self.stop = Button(self, text="")
self.data.grid (row=0, column=0, rowspan=4, columnspan=4, sticky=N+E+S+W)
self.data.columnconfigure(1, weight=1)
self.data.columnconfigure(3, weight=1)
self.add.grid(row=4,column=0,sticky=EW)
self.remove.grid(row=4,column=1,sticky=EW)
self.run.grid(row=4,column=2,sticky=EW)
self.stop.grid(row=4,column=3,sticky=EW)
scrollbar.grid(column=5, sticky=N+S)
- Veuillez éviter d'utiliser des caractères génériques d'importation, surtout si vous postez votre code sur LES..
Vous devez vous connecter pour publier un commentaire.
Sans aucun contenu dans la zone de liste, il n'y a rien à faire défiler...
Cela semble fonctionner bien (raccourcissement de l'exemple un peu). Voir aussi l'exemple à la barre de défilement de la documentation.
Vous devez définir la
command
attribut de la barre de défilement, et vous devez fournir leyscrollcommand
attribut de la zone de liste. Ces deux attributs de travailler ensemble pour faire quelque chose de déplacé.La
yscrollcommand
option indique la zone de liste "quand on défile dans la direction Y, l'appel de cette commande. C'est généralement leset
méthode de la barre de défilement, de sorte que lorsque l'utilisateur fait défiler via les touches fléchées, la barre de défilement est mis à jour.La
command
attribut d'une scorllbar dit: "lorsque l'utilisateur déplace vous, vous pouvez appeler cette commande". C'est généralement leyview
ouxview
méthode d'un widget, ce qui provoque le widget à changer sa façon de voir les paramètres dans le Y ou X direction.Dans votre cas, après avoir créé les widgets que vous voulez faire cela: