Ich bin neu in diesem Ort und tkinter. Ich bin dabei, eine scrollbare Listbox oder Leinwand zu erstellen. Ich habe beide Widgets ausprobiert. Innerhalb dieser Listbox oder Canvas habe ich mehrere Eingabe- und Label-Widgets. Der Ursprungspunkt ist R0, C0. Ich habe row/columnconfigure verwendet, um die Listbox oder Canvas zu dehnen.scrollbare Listbox in einem Raster mit tkinter
Im Hauptfenster hatte ich 4 Tasten in Reihe vier bis Spalte vier (0,4-> 4,4). Ich habe die Bildlaufleiste in Spalte 5 platziert. Ich habe versucht, die Rastermethode zu verwenden. Das Problem, das ich habe, macht die Bildlaufleiste funktional.
Hinweis: Das Drehen des Mainframes in eine Klasse ist nur eine der Möglichkeiten, die ich versucht habe. Es hat funktioniert, die Scrollleiste rechts zu packen, mit der Listbox/Canvas auf der linken Seite. Das Listbox-/Canvas-Widget, zu dem die Bildlaufleiste befohlen wurde, scrollt jedoch nicht in der Listbox/Leinwand. Auch das Hinzufügen vieler Eingabefelder führt nicht zum Scrollen des Listenfelds/Arbeitsbereichs. Hilfe bitte.
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)
Bitte vermeiden Sie die Verwendung von Wildcard-Import, vor allem, wenn Sie Ihren Code auf SO .. – fodma1