Tkinter 中的 Widgets 是类还是方法?

使用该Text()方法创建文本小部件。


import tkinter as tk 

root = tk.Tk()

T = tk.Text(root, height=2, width=30) 

T.pack() 

T.insert(tk.END, "Just a text Widget\nin two lines\n") 

w = tk.Label(root, text="Hello Tkinter!") 

w.pack() 

root.mainloop()

我是 Python 的新手。我的理解是,Text和Label是类,T并且w是从Text和Label类创建的对象。但是在上面的文本示例中,一个网站提到


使用该Text()方法创建文本小部件。


我现在完全糊涂了。pack()是一种方法,我们可以在我们从类创建的对象(T和这里)上应用方法和。wLabelText


请让我知道 、 、 等小部件Label是Text类Button还是方法。


MM们
浏览 131回答 2
2回答

汪汪一只猫

Tkinter 小部件是类。但是在上面的文本例子中,某网站提到A text widget is created by using the Text() method.那个网站不正确。它们是类,您可以通过查看 tkinter 的源代码来验证这一点,您会在其中看到每个小部件(Text、Label、Frame等)的类定义。例如,文本小部件的第一部分如下所示(取自 tkinter 的__init__.py文件):class Text(Widget, XView, YView):    """Text widget which can display text in various forms."""    def __init__(self, master=None, cnf={}, **kw):        """Construct a text widget with the parent MASTER.        STANDARD OPTIONS            background, borderwidth, cursor,            exportselection, font, foreground,            highlightbackground, highlightcolor,            highlightthickness, insertbackground,            insertborderwidth, insertofftime,            insertontime, insertwidth, padx, pady,            relief, selectbackground,            selectborderwidth, selectforeground,            setgrid, takefocus,            xscrollcommand, yscrollcommand,        WIDGET-SPECIFIC OPTIONS            autoseparators, height, maxundo,            spacing1, spacing2, spacing3,            state, tabs, undo, width, wrap,        """        Widget.__init__(self, master, 'text', cnf, kw)

潇湘沐

该inspect模块可能会帮助您消除困惑。In [37]: import inspectIn [38]: from tkinter import TextIn [39]: T = Text()In [40]: inspect.isclass(Text)Out[40]: TrueIn [41]: inspect.ismethod(Text)Out[41]: FalseIn [42]: inspect.ismethod(T.pack)Out[42]: True
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python