Python Tkinter中.xxxxxxx的含义是什么?

时间:2015-01-08 18:05:17

标签: python python-3.x tkinter

我想知道Python Tkinter中.xxxxxx(例如.50109912)的含义是什么。我试图检查Widget_name(container, **configuration options).pack()返回的内容 当然它会返回None但是当我在打包之前检查小部件返回的内容时,它会给出.50109912这样的内容。这就是我在IDLE Python3.3中得到它的方式。

>>> from tkinter import *
>>> root = Tk()
>>> mybutton = Button(root, text="Click Me", command=root.destroy)
>>> print(mybutton)
.50109912

2 个答案:

答案 0 :(得分:7)

数字50109912是按钮小部件的唯一Python对象ID:

>>> from tkinter import *
>>> root = Tk()
>>> mybutton = Button(root, text="Click Me", command=root.destroy)
>>> print(mybutton)
.38321104
>>> id(mybutton)
38321104
>>>

此外,字符串.50109912是按钮小部件的窗口路径名。窗口路径名称由TCL解释器在内部使用,以跟踪窗口小部件以及它们的父项。换句话说,它们是解释器遵循的路径,以便达到特定的小部件。

您也会注意到50109912winfo_name方法返回的号码相同:

>>> mybutton.winfo_name()
'38321104'
>>>

但请注意,winfo_name仅返回窗口小部件窗口路径名称的最后部分(其对象ID)。要获得完整路径,您需要通过执行widget.__str__()str(widget)来致电print(widget)


调用widget.__str__()的文档可以通过help找到:

>>> import tkinter
>>> help(tkinter.Button.__str__)
Help on function __str__ in module tkinter:

__str__(self)
    Return the window path name of this widget.

>>>

此外,您可能对Effbot上的Basic Widget Methods页面感兴趣(特别是关于.winfo_*方法的部分)。它包含有关如何获取窗口小部件窗口路径名称的特定部分的信息。


此外,如果您想要对象的Python表示,可以使用repr

>>> from tkinter import *
>>> root = Tk()
>>> mybutton = Button(root, text="Click Me", command=root.destroy)
>>> print(repr(mybutton))
<tkinter.Button object at 0x0248BBD0>
>>>

答案 1 :(得分:3)

import tkinter as tk
root = tk.Tk()
button = tk.Button(root)
frame = tk.Frame(root)
subframe = tk.Frame(frame)
label = tk.Label(subframe)

for widget in (root, button, frame, subframe, label):
    print('{:<8} id {:<20} str {!s:30} '.format(type(widget).__name__, id(widget), widget))

产量

Tk       id 140490446651632      str .                              
Button   id 140490446651744      str .140490446651744               
Frame    id 140490446651688      str .140490446651688               
Frame    id 140490417530808      str .140490446651688.140490417530808 
Label    id 140490417531368      str .140490446651688.140490417530808.140490417531368 

正如您所看到的,窗口小部件的str对于根窗口小部件是.,并且是子窗口小部件的以id数字的点分隔序列。 id号序列显示小部件的谱系。