【问题标题】:What does .! (dot exclamation mark) mean in python?什么.! (点感叹号)在python中是什么意思?
【发布时间】:2020-05-29 00:50:31
【问题描述】:

我写了以下程序:

from tkinter import *

root = Tk()

temp = None
def changeColor(event, e):
    # print('Positional arumgent passed:', x)
    print('event: ', event.widget)
    e2 = event.widget
    if e2['bg'] == 'white':
        e2['bg'] = 'black'
    elif e2['bg'] == 'black':
        e2['bg'] = 'white'
    global temp
    temp = event

entries = [[None for i in range(3)] for j in range(3)]

for y in range(3):
    for x in range(3):
        e = Entry(root, width=3, bg='white', bd=0, borderwidth=3)
        e.bind('<Double-Button-1>', lambda x: changeColor(x, e))
        e.grid(column=x, row=y)
        entries[y][x] = e

root.mainloop()

在终端中产生输出,

event:  .!entry5
event:  .!entry6
event:  .!entry8
...

当我检查终端中的 event.widgets(存储在 temp 中)之一时,我得到了,

>>> temp.widget
<tkinter.Entry object .!entry8>
>>> print(temp.widget)
.!entry8

我以前从未见过这种语法,我无法在文档中或在 stackoverflow 上找到任何关于它的内容。

有人知道它是什么吗?你能解释/描述一下吗?

【问题讨论】:

  • 它不是 python 代码的事实并不意味着它没有任何意义。如果它们不是用来传达某些东西的,它们就不会被包含在 str 中。

标签: python python-3.x tkinter syntax


【解决方案1】:

.! 不是一般的 Python 事物,它只是 tkinter 库命名小部件的方式,这些小部件没有以其他方式命名。 entry 来自 from here,因为这个小部件是一个 Entry 类。感叹号和数字后缀被分配here,大概被赋予!,这样自动生成的、类名派生的小部件名称不会与用户分配的名称重叠。领先时期是小部件在没有命名父级时如何命名;如果他们这样做了,那就是&lt;parentname&gt;.&lt;childname&gt;

【讨论】:

  • 小修正:所有小部件名称都有一个前导句点,即使是那些有一个命名父级的部件。第一个点代表根窗口,很像“/”代表文件系统的根文件夹。
猜你喜欢
  • 2011-01-11
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多