创建一个小部件而不把它存储在一个像变量这样的容器里?

2024-03-28 19:57:35 发布

您现在位置:Python中文网/ 问答频道 /正文

你好。在类方法中创建单选按钮或任何类型的小部件(如label小部件)时,我感到困惑,因为它没有像变量一样存储在某种容器中。这是我第一次看到这种代码:在这里

class Application(Frame):
    """ GUI Application for favorite movie type. """
    def __init__(self, master):
        """ Initiale Frame. """
        super(Application, self).__init__(master)
        self.grid()
        self.create_widgets()

    def create_widgets(self):
        """ Create widgets for movie type choices. """
        # Create description label
        Label(self,
              text = "Choose your favorite type of movie"
              ).grid(row=0, column=0, sticky= W)

        # create instruction label
        Label(self,
              text="Select one:"
              ).grid(row=1,column=0, sticky=W)

        Radiobutton(self,
                    text="Comedy",
                    variable=self.favorite,
                    value = "comedy.",
                    command = self.update_text
                    ).grid(row = 2, column = 0, sticky=W)

        # create Drama radio button
        Radiobutton(self,
                    text = "Drama",
                    variable = self.favorite,
                    value = "drama.",
                    command = self.update_text
                    ).grid(row = 3, column = 0, sticky = W)

        # create Romance button
        Radiobutton(self,
                    text = "Romance",
                    variable = self.favorite,
                    value = "romance.",
                    command = self.update_text
                    ).grid(row = 4, column = 0, sticky = W)

我通常看到这样的代码:

radio = Radiobutton(root)
radio.grid() 

你能解释一下第一个密码是怎么回事吗?它是如何创建一个小部件而不将其存储在某种变量中的,比如第二个代码


Tags: 代码textselfapplication部件typecreatecolumn
1条回答
网友
1楼 · 发布于 2024-03-28 19:57:35

Tkinter只是嵌入式Tcl解释器的一个薄包装,它本身就加载了tk工具包。创建小部件时,实际的小部件在tcl解释器中表示为一个对象。你知道吗

Tkinter将创建一个python对象来保存对这个tcl对象的引用,但是tcl/tk对象的存在并不需要python对象的存在。如果您创建一个小部件而不保存引用,那么小部件仍然被创建并且仍然存在于tcl/tk解释器中。你知道吗

相关问题 更多 >