我正在使用Python的内置tkinter GUI构建器。
按下按钮时,我创建了一个更改labelframe的功能。有许多按钮,所有这些都打开了不同的labelframe。如果再次按下它们,它将重置为默认帧。 我不能发布完整的代码,因为它太长了,但这里有你应该需要的一切。
button6 = ttk.Button(tab5, text="Button24",
command=lambda: controller.use_frame(Contents),
style="A.TButton")
button6.grid(ipadx=btnipx, ipady=btnipy,
padx=btnpx, pady=btnpy,
row=8, column=3,
sticky="nsew")
###################################################
# LABEL FRAMES
#######################
# DEFAULT FRAME
group_default = ttk.LabelFrame(self, text="DEFAULT")
label_default = ttk.Label(group_default, text="The selected program will execute here.\n\ntest", font=LARGE_FONT)
label_default.grid(padx=30, pady=30, row=0, column=0, sticky="nsew")
# LABEL FRAMES MANAGER
group_s = None
def lfm(group):
if group != group:
group_s = group.grid(row=0, column=1, sticky="nsew")
return group_s
else:
group_s = group_default.grid(row=0, column=1, sticky="nsew")
return group_s
# THIS IS MY SAMPLE CALL TO AUTOMATICALLY SET IT TO DEFAULT
lfm(group_default).grid(row=0, column=1, sticky="nsew")
我尝试从每个if / else块中取出'return'以及许多其他内容,但该函数不会返回labelframe,它会返回Nonetype。
这是错误:
File "C:/Users/user/PycharmProjects/testGUI/gui1_0tst.py", line 1171, in __init__
lfm(group_default).grid(row=0, column=1, sticky="nsew")
AttributeError: 'NoneType' object has no attribute 'grid'
答案 0 :(得分:0)
grid(...)
始终返回None
。请考虑以下代码:
group_s = group.grid(row=0, column=1, sticky="nsew")
group_s
始终为None
,这可能不是您的意图。而不是return group_s
您可能需要return group
或return group_default
。
答案 1 :(得分:-1)
AHHHHHHHHHHHHHHH我不相信我没有看到这个!
我一直在这工作几个小时。这太简单了。
group_s = None
def lfm(group):
if group != group:
group_s = group.grid(row=0, column=1, sticky="nsew")
return group_s
else:
group_s = group_default.grid(row=0, column=1, sticky="nsew")
return group_s
# THIS IS MY SAMPLE CALL TO AUTOMATICALLY SET IT TO DEFAULT
lfm(group_default).grid(row=0, column=1, sticky="nsew")
lfm(group_default).grid(row = 0,column = 1,sticky =“nsew”
READS: group_default.grid(row = 0,column = 1,sticky =“nsew”)。grid(row = 0,column = 1,sticky =“nsew”
至少我的问题解决了:D
首次发布StackOverflow帖子
新问题:如果发生类似这样的事情,它是否会一直返回Nonetype?