Ich verwende diesen Code von heretkinter Gitter und vererbte Objekt
Ich versuche, eine einfache Tabelle in einem Frame in tkinter einzufügen. Ich habe den Code angepasst, aber ich kann nicht scheinen, dass das neue Objekt die Rastergröße berücksichtigt.
Die Tabelle sollte die volle Breite haben und die Schaltfläche sollte angezeigt werden, aber die Tabelle nimmt nur die Hälfte des Fensters auf und ihre Höhe scheint festgelegt, da wenn ich die Geometrie der Hauptrahmen Geometrie ändert die Schaltfläche zeigt.
Kann mir jemand sagen, was ich falsch mache oder eine bessere Alternative vorschlagen, damit ich den Beginn des nächsten Jahres schlug meinen Kopf gegen die Wand nicht verbringen müssen :)
from tkinter import *
from tkinter import ttk
import tkinter.font as tkFont
class frmListMembers(Frame):
def __init__(self, master):
Frame.__init__(self, master)
#self.grid()
self.master = master
self.master.title("List Members")
self.master.geometry("500x240+0+0")
self.master.resizable(False, False)
self.focus_set()
container = Frame(master)
container.grid(row=0, column=0, padx=10,pady=10)
container.grid_columnconfigure(0, weight=1)
self.tblMembers = MemberListBox(container) #.grid(row=0,column=0)
self.OkButton = Button(master, text="DONE", command=self.oKButtonClick).grid(row=2, column=0, pady=(5), padx=10, sticky="E")
container.grid_rowconfigure(2, weight=1)
def oKButtonClick(self):
self.master.destroy()
class MemberListBox(object):
"""use a ttk.TreeView as a multicolumn ListBox"""
def __init__(self, container):
self.container = container
self.tree = None
self._setup_widgets()
self._build_tree()
def _setup_widgets(self):
#container = Frame()
#container.pack(fill='both', expand=True)
# create a treeview with vertical scrollbar
self.tree = ttk.Treeview(columns=car_header, show="headings")
vsb = Scrollbar(orient="vertical", command=self.tree.yview)
self.tree.configure(yscrollcommand=vsb.set, xscrollcommand=None)
self.tree.grid(column=0, row=0, sticky='NSEW', in_=self.container)
vsb.grid(column=1, row=0, sticky='NS', in_=self.container)
#self.container.grid_columnconfigure(0, weight=1)
#self.container.grid_rowconfigure(0, weight=1)
def _build_tree(self):
for col in car_header:
self.tree.heading(col, text=col.title(),
command=lambda c=col: sortby(self.tree, c, 0))
# adjust the column's width to the header string
self.tree.column(col,width=tkFont.Font().measure(col.title()))
for item in car_list:
self.tree.insert('', 'end', values=item)
# adjust column's width if necessary to fit each value
for ix, val in enumerate(item):
col_w = tkFont.Font().measure(val)
if self.tree.column(car_header[ix],width=None)<col_w:
self.tree.column(car_header[ix], width=col_w)
# the test data ...
car_header = ['car', 'repair', 'price', 'Mileage']
car_list = [
('Hyundai', 'brakes', 10999, 20101) ,
('Honda', 'light', 10999, 20101) ,
]
root = Tk()
frmListMembers(root)
root.mainloop()
Bitte korrigieren Sie Ihren Einzug, damit wir Ihren Code testen können. – Novel
Bitte geben Sie ein [a _Minimal_, Complete und Verifable Beispiel] (https://Stackoverflow.com/help/mcve) oder Sie sollten beginnen, für einen [Kopfschutz] zu speichern (https://www.brownhealthcare.com/images /HeadSaver%20head%20protector%20.jpg). – Nae
@Nae - Es ist so minimal und vollständig, wie ich bekommen kann. Was ist falsch daran, abgesehen von der Frage, auf die sich Roman bezieht? – grayson