Python 为什么select()返回空字符串?

Python 为什么select()返回空字符串?,python,string,tkinter,ttk,Python,String,Tkinter,Ttk,我正在用Python和Tkinter构建一个可扩展的文本编辑器,我决定使用ttk.Notebook小部件来支持同时打开进行编辑的多个文件。我继承了Notebook,并重写了它的select函数,这样它总是返回一个选项卡索引,而不是选项卡标识符。理论上,这将使API更加一致。但是,当我在启动时调用未修改的select时,它返回一个空字符串,并将其传递给索引,而索引不喜欢空字符串 下面是有问题的函数: def selectself,tabid=None: 如果tabid为None: 返回self.i

我正在用Python和Tkinter构建一个可扩展的文本编辑器,我决定使用ttk.Notebook小部件来支持同时打开进行编辑的多个文件。我继承了Notebook,并重写了它的select函数,这样它总是返回一个选项卡索引,而不是选项卡标识符。理论上,这将使API更加一致。但是,当我在启动时调用未修改的select时,它返回一个空字符串,并将其传递给索引,而索引不喜欢空字符串

下面是有问题的函数:

def selectself,tabid=None: 如果tabid为None: 返回self.indexsuper.select 返回super.selecttabid 我知道这不是由super的误用引起的,因为此测试代码也会出现错误:

进口tkinter 导入tkinter.ttk root=tkinter.Tk foo=tkinter.ttk.Notebookroot bar=tkinter.Framefoo foo.addbar foo.pack;酒吧包 printreprfoo.select prints
我在文档中的任何地方都找不到select可能返回空字符串的情况。我遗漏了什么?

@furas为测试用例工作,但不是真正的代码。包装会如何影响这一点?我认为添加到ttk的小部件。笔记本不需要包装/网格/位置。可能ttk.Notebook有自己的布局管理-选项卡需要与并排放置在一个表面(如窗口或框架)上的对象不同的内容。@bkul笔记本小部件本身foo必须像您一样放置/打包/网格化在根窗口中。添加到笔记本的小部件由笔记本的特定几何体管理器管理,就像在条目、文本、树和画布中放置字符、项目和小部件一样。