无法在现有框架中通过 class def 显示小部件
can not display widget through class def in existing frame
翻阅博客、教程等,我一直无法理解为什么以下代码不会在框架中显示标签。当我不定义 class 时,我可以很好地执行此任务,但我想创建此应用程序以便能够更动态地创建框架和其他小部件。这是代码。 init 工作正常并适当地在根 window 中显示一个框架。代码运行没有任何错误。我在 add_heading 函数中添加了 print 语句和 print(type()) 语句,但仍然没有显示标签。希望有人能告诉我我做错了什么。提前致谢
#!/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()
self = LabelFrame(root ...
部分有问题,也许可以尝试这样的操作来保持对标签框的控制:
from tkinter import *
class CompFrame(Frame): # Edit with Bryan Oakley comment
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 = LabelFrame(root, text=title, width=f_w, height=f_h, bg="light grey")
self.labelframe.grid_columnconfigure(columns, weight=1)
self.labelframe.grid(row=rows, column=columns)
self.labelframe.grid_propagate(False)
def add_heading(self, title):
label_width=12
ftitle = Label(self.labelframe, text=title)
ftitle.configure(font='Helvetica 24 bold', width=label_width)
ftitle.place(x=5, y=2)
翻阅博客、教程等,我一直无法理解为什么以下代码不会在框架中显示标签。当我不定义 class 时,我可以很好地执行此任务,但我想创建此应用程序以便能够更动态地创建框架和其他小部件。这是代码。 init 工作正常并适当地在根 window 中显示一个框架。代码运行没有任何错误。我在 add_heading 函数中添加了 print 语句和 print(type()) 语句,但仍然没有显示标签。希望有人能告诉我我做错了什么。提前致谢
#!/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()
self = LabelFrame(root ...
部分有问题,也许可以尝试这样的操作来保持对标签框的控制:
from tkinter import *
class CompFrame(Frame): # Edit with Bryan Oakley comment
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 = LabelFrame(root, text=title, width=f_w, height=f_h, bg="light grey")
self.labelframe.grid_columnconfigure(columns, weight=1)
self.labelframe.grid(row=rows, column=columns)
self.labelframe.grid_propagate(False)
def add_heading(self, title):
label_width=12
ftitle = Label(self.labelframe, text=title)
ftitle.configure(font='Helvetica 24 bold', width=label_width)
ftitle.place(x=5, y=2)