当前位置: 首页 > 面试题库 >

Tkinter变量跟踪方法回调的参数是什么?

柴寂离
2023-03-14
问题内容

Python有类Tkinter的变量StringVar()BooleanVar()等等,这些都共享方法get()set(string)trace(mode, callback)callback作为第二个参数trace(mode, callback)传递给的函数将传递四个参数self, n, m, x

例如,BooleanVar()这些似乎是'', 'PYVAR0', 'w'

第三个参数x似乎是触发跟踪的模式,在我的情况下,变量已更改。但是,第一个看似空字符串的变量是什么?如果我不得不猜测该变量的内部名称,第二秒是什么?


问题答案:

第一个参数
是内部变量名称。您可以将此名称用作tkintergetvarsetvar方法的参数。如果你给你的变量名称(例如:StringVar(name='foo')),这将是给定的名称,否则将是Tkinter的为您生成一个名称(例如:PYVAR0

如果第一个参数表示列表变量(在tkinter中不太可能), 则第二个参数 将是该列表的索引。如果它是标量变量,则第二个参数将为空字符串。

第三个参数 是运算,如果您使用相同的方法读取,写入和/或删除变量, 该参数
很有用。此参数告诉您哪个操作触发了回调。对于写操作(设置变量),它将为“ w”;对于读操作(获取变量的值),将为“ r”。如果删除了变量,它将为“ u”(“
u”是“ unset”的缩写)

Tkinter是围绕tcl /
tk解释器的python包装器。可以在以下位置找到有关变量跟踪的权威文档:http
:
//tcl.tk/man/tcl8.5/TclCmd/trace.htm#M14。虽然,这仅记录了内部跟踪的工作方式,但tkinter包装器有时还会处理数据。



 类似资料:
  • 问题内容: 所有按钮都返回10。为什么? 我想要按钮1返回1,按钮2返回2 … 非常感谢您的帮助 问题答案: 您的匿名函数可以是闭包(如@abernert所指出的,在Python的情况下,它们 实际上并不是 闭包)-它们“封闭”了变量,以供以后引用。但是,它们不是在定义时查找值,而是 在调用 时查找值,这是整个循环结束 后 的某个时间(此时等于10)。 要解决此问题,您需要将的值重新绑定到其他东西

  • 问题内容: 考虑下面的两个简单的Java类: 第一个例子 第二个例子 程序运行后,如何跟踪(1)哪个对象调用哪个方法(2)以及执行多少次? 稍微精确一点,我可能有100个类和1000个对象,每个对象都调用100多个方法。我希望能够跟踪(在运行程序之后)哪个对象调用了哪种方法以及调用了多少次。 感谢您的任何建议。 问题答案: 这将为所有线程中所有对象的每个方法调用打印一行: 和 您可以使用 hous

  • 问题内容: 我有一个带有变量StudentID的班级Student: 我希望变量StudentID继续分配给每个Student创建的新ID号。每个ID号都应比上一个创建的ID号大一个,并且应等于已创建的对象总数。现在,每个对象的ID号为1。 问题答案: 将studentID设为静态成员 静态成员将在整个类的每个实例中保留,无论有多少个clas实例。

  • 支持跟踪对标量值的就地更改,这些更改将传播到所属父对象的ORM更改事件中。 建立标量列值的可变性 “可变”结构的一个典型例子是Python字典。遵循中介绍的示例 列和数据类型 ,我们从自定义类型开始,该类型在持久化之前将python字典封送到json字符串中: from sqlalchemy.types import TypeDecorator, VARCHAR import json clas

  • 问题内容: 看到以下代码的输出,我感到很惊讶: 它输出 为什么会这样呢? 我以为该代码不会编译,因为对的调用是 模棱两可的 ,但它运行良好并可以输出。 如果我将代码修改为: 没有错误消息。 为什么第一个代码可以正常运行,但是第二个却给出错误? 问题答案: 此行为是由于与和之间没有这种比较相比,它更具体。 如JLS 第15.12.2.5节(强调我的)中所述: 如果满足以下任一条件,则使用参数表达式e

  • 尝试解决问题 http://www.hackerearth.com/problem/algorithm/sum-of-medians-1/ 并考虑使用多集来解决它,因为它可能包含重复的值。我尝试按如下方式编写代码: