durch Blogs, Tutorials und dergleichen anzeigen, ich konnte nicht verstehen, warum der folgende Code wird nicht angezeigt, ein Label in einem Frame. Ich kann diese Aufgabe gut ausführen, wenn ich keine Klasse definiere, aber ich möchte diese Anwendung erstellen, um Frames und andere Widgets dynamischer erstellen zu können. Hier ist der Code. init funktioniert gut und zeigt einen Frame im Root-Fenster entsprechend. Der Code wird ohne Fehler ausgeführt. Ich habe print-Anweisungen und print (type()) -Anweisungen über die Funktion add_heading hinzugefügt, aber es wird immer noch kein Label angezeigt. Hoffentlich kann mir jemand sagen, was ich falsch mache. Vielen Dank im Vorauskann Widget nicht durch Klassen-Def in bestehenden Rahmen
#!/usr/bin/python3
from tkinter import *
class CompFrame(Tk):
def __init__(self, parent, rows, columns, title):
Frame.__init__(self, parent)
self.root = parent
f_w = screen_width/3
f_h = screen_height * .90
self = LabelFrame(root, text=title, width=f_w, height=f_h, bg="light grey")
self.grid_columnconfigure(columns, weight=1)
self.grid(row=rows, column=columns)
self.grid_propagate(False)
def add_heading(self, title):
label_width=12
ftitle = Label(self, text=title)
ftitle.configure(font='Helvetica 24 bold', width=label_width)
ftitle.place(x=".5i", y=".2i")
root = Tk()
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
root.geometry("%dx%d%d%d" % (screen_width,screen_height,0,0))
Calibrator = PhotoImage(file="image1.png")
Feeeder = PhotoImage(file="image2.PNG")
frame1 = CompFrame(root, 0, 0, "Component 1")
frame1.add_heading("NATURAL")
root.mainloop()
Ihre 'CompFrame' muss von' Frame', nicht 'Tk' erben . Das ist nicht das ganze Problem, aber es ist Teil des Problems. –