什么是。!(点感叹号)在python中是什么意思?

2024-09-30 12:28:15 发布

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

我编写了以下程序:

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.widget(存储在temp中)时,我得到

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

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

有人知道这是什么吗?你能解释一下吗


Tags: innoneeventfortkinterrangerootwidget
1条回答
网友
1楼 · 发布于 2024-09-30 12:28:15

.!不是一般的Python,而是tkinter库如何命名没有命名的小部件entry来自from here,因为这个小部件是一个Entry类。感叹号&;数字后缀被分配here,可能被赋予一个!,这样自动生成的、从类名派生的小部件名称就不会与用户分配的名称重叠。领先阶段是小部件在没有命名父部件时的命名方式;如果他们这样做了,那将是^{}

相关问题 更多 >

    热门问题