我正在用Python和Tkinter构建一个可扩展的文本编辑器,我决定使用ttk.Notebook小部件来支持一次打开进行编辑的多个文件。我继承了Notebook和(除其他外)覆盖其select
函数,以便它总是返回一个tab索引而不是tab标识符。从理论上讲,这将使API更加一致。但是,当我在启动时调用未修改的select
时,它返回一个空字符串,该字符串将传递给index
,它不喜欢空字符串。
这是有问题的功能:
def select(self, tabid=None):
if tabid is None:
return self.index(super().select())
return super().select(tabid)
我知道这不是由于super()
的误用造成的,因为此测试代码也会出现错误:
import tkinter
import tkinter.ttk
root = tkinter.Tk()
foo = tkinter.ttk.Notebook(root)
bar = tkinter.Frame(foo)
foo.add(bar)
foo.pack(); bar.pack()
print(repr(foo.select())) # prints ''
我无法在select()
可能返回空字符串的文档中找到任何案例。我错过了什么?