Python3.4-(tk/ttk/tcl)LabelFrames管理器
我正在使用Python的内置tkinter GUI生成器 我做了一个功能,当按下一个按钮时,可以改变一个labelframe。有许多按钮,都可以打开不同的labelframe。如果再次按下它们,它将重置为默认帧。 我不能发布完整的代码,因为它太长了,但这里有你需要的一切Python3.4-(tk/ttk/tcl)LabelFrames管理器,python,user-interface,tkinter,Python,User Interface,Tkinter,我正在使用Python的内置tkinter GUI生成器 我做了一个功能,当按下一个按钮时,可以改变一个labelframe。有许多按钮,都可以打开不同的labelframe。如果再次按下它们,它将重置为默认帧。 我不能发布完整的代码,因为它太长了,但这里有你需要的一切 button6 = ttk.Button(tab5, text="Button24", command=lambda: controller.use_frame(Content
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'
真不敢相信我居然没看到这个 我已经为此工作了好几个小时了。这太简单了
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")
lfmgroup_默认值。gridrow=0,column=1,sticky=nsew
内容如下:
组\默认值。gridrow=0,column=1,sticky=nsew。gridrow=0,column=1,sticky=nsew
至少我的问题解决了:D
有史以来的第一个StackOverflow post
新问题:如果发生这种情况,它是否总是返回Nonetype?网格。。。总是返回“无”。考虑下面的代码:
group_s = group.grid(row=0, column=1, sticky="nsew")
组永远是无的,这可能不是你想要的。您可能需要的不是返回组,而是返回组或返回组默认值。如何编辑If语句,以便在单击两次按钮时,它将重置为默认值?它不起作用,但其他的一切都是我们不需要完整的代码,我们需要实际运行的最小数量的代码来复制问题。编写一个新程序,该程序的代码刚好足以解决该问题。通常,您尝试编写该程序的行为将使您能够自己发现错误。看到了,谢谢,但是问题在我之前的回答中已经解决了。当我调用lfmgroup_default.gridrow=0,column=1,sticky=nsew时,函数返回group.gridrow=0,column=1,sticky=nsew,所以我的代码实际上是在输出:group.gridrow=0,column=1,sticky=nsew。gridrow=0,column=1,sticky=nsew,这在任何方面都是无效的。为了解决这个问题,我只调用了lfmgroup\u default,没有使用网格。该代码现在运行良好: