我正在使用 Tkinter 和 Pmw 编写一个小型应用程序。使用 Pmw NoteBook 类有一个接口,允许用户创建新的选项卡进行输入。
这些选项卡中的每一个都具有完全相同的内容(单选按钮和输入字段),因此我希望仅将内容写入一个函数中。但这不起作用,我不明白为什么不这样做。我在 Traceback 中得到一个对我没有意义的 NameError,因为已经为整个类定义了“页面”,我可以在其他函数定义中使用它。
<type 'exceptions.NameError'>: global name 'page' is not defined
我正在尝试做的最简单的工作版本是(基于 Pmw 附带的 NoteBook_2 示例):
import Tkinter
import Pmw
class Demo:
def __init__(self, parent):
self.pageCounter = 0
self.mainframe = Tkinter.Frame(parent)
self.mainframe.pack(fill = 'both', expand = 1)
self.notebook = Pmw.NoteBook(self.mainframe)
buttonbox = Pmw.ButtonBox(self.mainframe)
buttonbox.pack(side = 'bottom', fill = 'x')
buttonbox.add('Add Tab', command = self.insertpage)
self.notebook.pack(fill = 'both', expand = 1, padx = 5, pady = 5)
def insertpage(self):
# Create a new Tab
self.pageCounter = self.pageCounter + 1
pageName = 'Tab%d' % (self.pageCounter)
page = self.notebook.insert(pageName)
self.showPageContent()
def showPageContent(self):
# This function should contain the content for all new Tabs
tabContentExample = Tkinter.Label(page, text="This is the Tab Content I want to repeat\n")
tabContentExample.pack()
# Create demo in root window for testing.
if __name__ == '__main__':
root = Tkinter.Tk()
Pmw.initialise(root)
widget = Demo(root)
root.mainloop()
谁能给我一个解决方案的指针?