Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3.4-(tk/ttk/tcl)LabelFrames管理器_Python_User Interface_Tkinter - Fatal编程技术网

Python3.4-(tk/ttk/tcl)LabelFrames管理器

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

我正在使用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'

真不敢相信我居然没看到这个

我已经为此工作了好几个小时了。这太简单了

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,没有使用网格。该代码现在运行良好: