gpt4 book ai didi

Python ttk 对象 - 不了解特定于小部件的选项

转载 作者:行者123 更新时间:2023-11-28 21:51:10 25 4
gpt4 key购买 nike

昨天在实现一个ttk进度条,看到了一些不太明白的代码。

可以使用如下方式为进度条设置最大值:

progress_bar["maximum"] = max

我原以为 ttk Progressbar 对象会使用实例变量来跟踪已创建对象的最大值,但该语法看起来更像:

progres_bar.maximum = max

所以我的问题是,此处括号语法到底发生了什么,术语是什么,我在哪里可以阅读更多相关信息?当我查看 Progressbar 类时,我看到的只是

class Progressbar(Widget):
"""Ttk Progressbar widget shows the status of a long-running
operation. They can operate in two modes: determinate mode shows the
amount completed relative to the total amount of work to be done, and
indeterminate mode provides an animated display to let the user know
that something is happening."""

def __init__(self, master=None, **kw):
"""Construct a Ttk Progressbar with parent master.

STANDARD OPTIONS

class, cursor, style, takefocus

WIDGET-SPECIFIC OPTIONS

orient, length, mode, maximum, value, variable, phase
"""
Widget.__init__(self, master, "ttk::progressbar", kw)

我看到有一个“widget-specifc option”,但我不明白 progress_bar["maximum"] = max 如何设置该值,或者它是如何存储的。

最佳答案

发生的事情是 ttk 模块是一个围绕安装了 tk 包的 tcl 解释器的薄包装器。 Tcl/tk 没有 python 类的概念。

在 tcl/tk 中,设置属性的方法是使用函数调用。例如,要设置最大属性,您可以这样做:

.progress_bar configure -maximum 100

ttk 包装器非常相似:

progress_bar.configure(maximum=100)

出于只有原始 tkinter 开发人员知道的原因,他们决定实现一个允许您使用括号表示法的字典接口(interface)。也许他们认为它更像 python ?例如:

progress_bar["maximum"] = 100

几乎可以肯定,他们没有为对象设置这些属性的原因(例如:progress_bar.maximum = 100)是因为某些 tcl/tk 小部件属性会与 python 保留字或标准冲突属性(例如,id)。通过使用字典,他们避免了此类冲突。

关于Python ttk 对象 - 不了解特定于小部件的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30732579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com