【发布时间】:2024-04-23 20:50:01
【问题描述】:
我正在向我的 tkinter 应用程序添加一些日志记录功能。理想情况下,该函数将告诉它更改的变量的名称和更改为的值。下面是相关代码。
这声明了我正在使用的实例变量:
## priorityLevel
self.rbPriorityValue = StringVar()
self.rbPriority = None
self.rbMinor = None
这设置了一切的值:
self.rbPriority = ttk.Radiobutton(cf, text="Priority", variable=self.rbPriorityValue, value="priority",
command=lambda: self.rbValueChanged(self.rbPriorityValue, self.rbPriority))
self.rbPriority.grid(row=21, column=0, sticky="w", padx=(indent, 0))
self.rbMinor = ttk.Radiobutton(cf, text="Minor", variable=self.rbPriorityValue, value="minor",
command=lambda: self.rbValueChanged(self.rbPriorityValue, self.rbMinor))
self.rbMinor.grid(row=22, column=0, sticky="w", padx=(indent, 0))
这是日志功能:
def rbValueChanged(self, radioValue, modifiedWidget):
print("The value of %s is:" % radioValue.__str__(), end="\t\t")
print(modifiedWidget.cget("value"))
#end rbValueChanged
当我选择单选按钮时,日志记录功能会打印“PY_VAR25”而不是“rbPriorityValue”。有什么办法可以退货,还是我能得到最好的 PY_VAR25?
【问题讨论】:
-
StringVar 无法知道您使用什么名称来引用它。您可以在创建 var 时传递
name=参数以覆盖其自动生成的名称,但请注意,为每个 var 指定不同的名称完全是您的责任 - 意外重复名称不会产生任何错误消息。 -
如果StringVar不知道,那么StringVar所属的对象不应该知道吗?
-
您或许可以使用
trace来监听您的变量并触发日志记录。 -
什么是跟踪,在这种情况下我将如何使用它?
标签: python-3.x logging tkinter