哪个是正确的:widget.rowconfigure 还是 widget.grid_rowconfigure?

10

使用网格布局管理器时,假设您有以下内容:

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?为什么?

奖励问题:从实现的角度来看,为什么两者都可以使用?

2个回答

11

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

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是自然的选择。


1
根据我的经验,很少有人会随意为其函数创建别名,特别是在一个被数百万人使用多年的 API 中。鉴于这种经验,可能除了方便之外,还有其他原因导致了这个别名的存在。 - Trevor Boyd Smith

3
如果你浏览Tkinter.py,你会发现rowconfigure只是grid_rowconfigure的一个引用。

你获得了奖励分。我只是在符号上按了F3,发现rowconfigure=grid_rowconfigure - Trevor Boyd Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接