【问题标题】:What is correct: widget.rowconfigure or widget.grid_rowconfigure?什么是正确的:widget.rowconfigure 或 widget.grid_rowconfigure?
【发布时间】:2013-08-19 07:16:50
【问题描述】:

使用网格几何管理器时。假设您有:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)
ttk.Button(root, text="Hello World").grid(sticky=tk.NSEW)
root.mainloop()

指定行/列权重的部分也可以编码为:

root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)

对于这个例子,什么是正确的方法:widget.rowconfigure 或 widget.grid_rowconfigure?为什么?

奖励:从实施 POV 来看,为什么两者都有效?

【问题讨论】:

    标签: python user-interface tkinter tk


    【解决方案1】:

    widget.rowconfigure 实际上只是widget.grid_rowconfigure 的别名。在 tkinter 的源代码中是这行代码:

    rowconfigure = grid_rowconfigure
    

    我不知道事实,但我怀疑 widget.rowconfigure 只是为了方便而添加的。坦率地说,在我读到这个问题之前,我什至都不知道它的存在。

    在我看来,grid_rowconfigure 是正确的名称。我这么说是因为 tkinter 是底层 tcl/tk 解释器的接口,而在 tcl/tk 中,命令是grid rowconfigure。由于大多数 tkinter 函数尽可能地镜像 tcl/tk 函数的命名约定,grid_rowconfigure 是自然的选择。

    【讨论】:

    • 根据我的经验,随机为其函数创建别名的情况并不常见,尤其是在数百万多年来使用的 API 中。鉴于这种经验,除了别名的方便之外,可能还有/曾经有其他原因。
    【解决方案2】:

    如果您浏览 Tkinter.py,您会发现 rowconfigure 只是对 grid_rowconfigure 的引用。

    【讨论】:

    • 您获得奖励积分。我刚刚在符号上按 F3 并注意到 rowconfigure=grid_rowconfigure.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2019-12-26
    • 2016-11-28
    • 2021-11-26
    相关资源
    最近更新 更多