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

何时使用变量类?(BooleanVar,DoubleVar,IntVar,StringVar)

樊桐
2023-03-14
问题内容

不能tkinter.widget.configure(text="our text")用于所有小部件吗?使用以下优点或主要目的是什么?

var_cls = tkinter.StringVar()
tkinter.widget.configure(textvariable=var_cls)

是否var_cls可以在方法/类之间更轻松地共享?

变量类的示例:

import tkinter as tk
root = tk.Tk()
var = tk.StringVar(value="This will be on the label.")
tk.Label(root, textvariable=var).pack()
root.mainloop()

没有变量类的示例:

import tkinter as tk
root = tk.Tk()
tk.Label(root, text="This will be on the label.").pack()
root.mainloop()

问题答案:

在Tkinter的应用程序,StringVar(以及IntVarBooleanVarDoubleVar)是很少需要。底层的tcl /
tk解释器为其所有变量提供了特殊功能,因此存在这些包装程序以利用这些功能。

这些变量具有的两个主要优点是:

  1. 您可以将一个变量与一个以上的小部件关联,以便两个或多个小部件始终显示完全相同的信息。
  2. 您可以绑定值更改时要调用的函数。

我的意见是,除非明确需要这两个功能之一,否则不要使用它们。如果您只需要获取或设置窗口小部件的值,则可以在窗口小部件本身上执行一些方法(例如:entry_widget.insert(…),label_widget.configure(text
=’…’)等) 。

我认为它们会通过引入需要管理的其他对象而增加开销,而不会提供任何额外的好处,除非您利用了上述两个功能。



 类似资料:
  • 问题内容: pthread问题: 似乎只有在其他线程调用pthread_cond_notify之前调用pthread_cond_wait时,条件变量才起作用。如果在等待之前以某种方式发生通知,则等待将卡住。 我的问题是: 什么时候应该使用条件变量? 调度程序可以抢占线程,并且在等待之前可能会发生通知。 等待信号量没有这个问题-它们有一个计数器。 什么时候条件变量比信号量更好? 这是一个测试: 文件

  • 我有一行代码: 它接受一个变量,其类型应为float。当我使用type()测试变量类型时,它返回: 但是我一直收到一个错误,上面写着“/: str和int不支持的操作数类型”。

  • 问题内容: 我特定类的所有后代都要有一个实例变量。所以我的父母班有。我也想在sublclass中使用它,但是作为一个。我该怎么做呢? 我添加了相同的名称,并对两个变量声明都添加了weak。但是我收到有关“无法用存储的属性覆盖”的错误。 我应该怎么做?是否有可能不必实例化超类的版本,因为我只想将其用于子类化? 问题答案: 只需在超类中添加修饰符即可。

  • 我有2种类型的类型类,其中一种类型包含另一种类型 我想这样称呼我的类型类: 但这行不通。 错误:(34,23)找不到参数e的隐式值:com.playground.Valides[com.playground.MyModel1,model.version.type]val v=隐式[Valides[MyModel1,model.version.type]]错误:(34,23)没有足够的隐式方法参数:

  • 问题内容: 我有几个字段,每个字段都是这样的: 通过使用带有计数器的循环,我希望能够说出fieldx。其中x是该循环中计数器的值。这意味着如果我的数组中有6个条目,则将为fields1-field6提供值。 是否可以使用fieldx? 问题答案: 您可以使用反射来完成此操作,但是通常最好在数组中声明字段。代替: 你可以这样做: 然后,您可以遍历数组来设置值:

  • 问题内容: 我正在尝试创建一个分页类,并使用该类外部的变量。 但这给了我致命错误“在非对象上调用成员函数query()”。 这是索引文件: 这是pagi.php文件: 是否可以在类内部使用该变量,而无需在类内部创建新变量? 问题答案: 解决此问题的正确方法是将数据库对象注入另一个类(依赖项注入): 解决该问题的另一种方法是将数据库类的实例注入使用它的方法中: 您选择哪种方法取决于情况。如果只有一个