分配labelwidget

时间:2017-05-14 20:11:54

标签: python tkinter

我正在尝试创建一个类来构建labelframe,其中labelwidget选项是一个条目小部件。 Widget类与调用脚本位于不同的文件中。

我在尝试将条目小部件与labelframe的labelewidget选项相关联时收到错误。

这是错误消息:

_tkinter.TclError: bad window path name "<RtMaintWidgets.Entry object at 0x0000000003768080>"  

这是调用脚本的代码:

# Create the frame
    # self.FSrootF = rt.Frame.crt(self.FSwindow)
    self.FSrootF = tk.Frame(self.FSwindow)
    self.FSrootF.grid(sticky='nsew')

    # Create the widgets
    self.FScrtInfo()

def FScrtInfo(self):
    """
    """
    # Create the label frame
    # " User Information:"
    # "rasterToolGUI allows you to adjust \\n
    #  spot elevations in X_Plane scenery.\\n
    #  Select the file on which to work,\\n
    #  select the options and let the magic begin."
    self.FSinfoLf = rt.LabelFrame(self.FSrootF,
                                  self.FSparms['LF001'])
    self.FSinfoLf.grid()

..这是小部件脚本中的代码

class Entry(object):
    def __init__(self, into, text, justify='left'):
        """

        :param into: 
        :param text: 
        :param justify: 
        """
        self.__into = into
        self.__text = text
        self.__titlewidth = len(self.__text) + 3
        self.__justify = justify
        self.__entrysvar = tk.StringVar()

        self.__entrysvar.set(self.__text)
        self.__entry = tk.Entry(self.__into,
                                width=self.__titlewidth,
                                textvariable=self.__entrysvar,
                                justify=self.__justify)


class LabelFrame(object):
    " Class documentation"
    def __init__(self, into, title, labelanchor='nw', relief='groove'):
        """

        :param into:
        :param title:
        :param labelanchor:
        :param relief:
        """
        self.__into = into
        self.__title = ' ' + title
        self.__labelanchor = labelanchor
        self.__relief = relief

        # Create the lf
        self.__lf = tk.LabelFrame(self.__into,
                                  labelanchor=self.__labelanchor,
                                  relief=self.__relief)
        # create the entry
        self.__entry = Entry(self.__lf,
                             self.__title)

        self.__lf['labelwidget'] = self.__entry   < Statement causing the error  

我以为我知道自己在做什么,但显然不是。我试过改变“自我”,改变调用的语法,但我无法弄清楚我做错了什么。

在测试中,python指定的名称似乎确实转移到小部件脚本中,所以我看不出实际的错误是什么。

我哪里错了?

1 个答案:

答案 0 :(得分:1)

labelwidget必须设置为实际的小部件。您将其设置为包含小部件但其本身不是小部件的自定义类之一。