Ich habe geschrieben und Anwendung Frontend mit Tkinter, die ein Layout des Seiten-Managers verwendet und würde es mit einem Grid-System statt Pack legen. Ich konnte die Scrollbar-Funktion nicht mit dem Grid-Layout arbeiten, also habe ich es mit dem Pack eingerichtet. Dies funktioniert im Allgemeinen, aber das Layout, das ich möchte, wird ein Raster (oder eine Reihe von zusätzlichen Frames bei der Verwendung von Pack) benötigen.Scrollbar und Größenanpassung funktioniert nicht mit Tkinter Grid-Array und Treeview
Kann jemand einen Blick darauf werfen, was ich nicht bekomme? Ich habe Code mit dem Pack-System eingefügt, das etwas nah an dem gibt, was ich mit Gitter erreichen möchte. Die entsprechenden Grid-Befehle, von denen ich dachte, dass sie funktionieren, sind auskommentiert.
Ich nahm auch die Seitenverwaltung in der Hauptklasse und reduzierte es auf eine Seite, um die Probleme klarer zu machen. Ich möchte auf lange Sicht das Seitenmanagement behalten ...
Danke fürs schauen!
import tkinter as tk
from tkinter import ttk
import tkinter.font as tkFont
colHeadings = ['car', 'repair']
itemList = [('Hyundai', 'brakes'),('Honda', 'light'),
('Lexus', 'battery'), ('Benz', 'wiper'),
('Ford', 'tire'), ('Chevy', 'air'),
('Chrysler', 'piston'), ('Toyota', 'brake pedal'),
('BMW', 'seat')]
def buildtree(thetree, colHeadings, itemList):
thetree['columns'] = colHeadings
for each in colHeadings:
thetree.column(each, width=tkFont.Font().measure(each.title()))
thetree.heading(each, text=each.title())
for item in itemList:
thetree.insert('', 'end', values=item)
for i, each in enumerate(item):
colwidth = int(1.3*tkFont.Font().measure(each))
if thetree.column(colHeadings[i], width=None) < colwidth:
thetree.column(colHeadings[i], width=colwidth)
class AppBT(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = ttk.Frame(self)
frame = StatsTree(container)
container.pack(side="top", fill="both", expand=1)
frame.pack(side="top", fill="y",expand=1)
# container.grid(row=0, column=0, sticky="nsew")
# container.grid_rowconfigure(0, weight=1)
# container.grid_columnconfigure(0, weight=1)
# frame.grid(row=0, column=0, sticky="ns")
class StatsTree(ttk.Frame):
def __init__(self, parent):
ttk.Frame.__init__(self, parent)
tframe = ttk.Frame(self)
yscrollbar = ttk.Scrollbar(tframe, orient="vertical")
tree = ttk.Treeview(tframe)
yscrollbar.config(command=tree.yview)
tree.config(yscrollcommand=yscrollbar.set)
buildtree(tree, colHeadings, itemList)
tree.pack(side="left", fill="y")
yscrollbar.pack(side="right", fill="y")
tframe.pack(side="top", fill="y", expand=1, padx=10, pady=10)
# tframe.grid(row=0, column=0, sticky="ns", padx=10, pady=10)
# tframe.grid_rowconfigure(0, weight=1)
# tframe.grid_columnconfigure(0, weight=1)
# tree.grid(row=0, column=0, sticky="ns")
# tree.grid_rowconfigure(0, weight=1)
# tree.grid_columnconfigure(0, weight=1)
# yscrollbar.grid(row=0, column=1, sticky="ns")
# yscrollbar.grid_rowconfigure(0, weight=1)
# yscrollbar.grid_columnconfigure(1, weight=1)
app = AppBT()
app.geometry("800x600")
app.mainloop()