Python, Tkinter:如何将函数输出重定向到笔记本标签?
我在想,是否可以把一个函数的输出重定向到ttk笔记本小部件中的一个标签页里。
我原以为这和列表框小部件差不多,只需要用listbox.insert
就可以了,但我试了很多次都没成功。
如果这个问题很简单,我很抱歉,但我真的被难住了,而且在网上找不到任何有用的资料来帮助我。
提前谢谢你们!
我使用的是Python 3.3
2 个回答
1
这有点儿取决于你用什么样的控件作为标签,但基本上应该没什么大区别。只要记住你的标签控件,并调用合适的方法就可以了。
下面是一个有两个文本标签的例子:
from Tkinter import *
from ttk import Notebook
def addText(tab):
tab.insert(END, "foo! ")
root = Tk()
nb = Notebook(root, height=240, width=480)
tabs = {"foo": [], "bar": []}
for tabname in tabs:
tab = Text(nb)
tabs[tabname] = tab
nb.add(tab, text= tabname)
nb.pack()
Button(root, text= "Add text!", command = lambda: addText(tabs["foo"])).pack()
root.mainloop()
点击“添加文本!”按钮会在第一个标签上添加一些文本。
2
Insert函数的工作方式几乎是一样的,唯一的区别是它接收的是一个框架,而不是字符串。不过,Add函数要简单得多,你不需要指定位置,它会直接把内容加到最后。你只需要创建一个框架,把一个文本元素放进去,然后再把整个框架放到笔记本里。大概是这个样子:
noteb = ttk.Notebook( root, width=500, height=300 )
frame1 = tkinter.Frame( noteb )
textbox = tkinter.Text( frame1, put whatever you want to put here )
frame1.pack( expand=1, fill='both' )
noteb.add( frame1, whatever parameters you want )
noteb.pack( expand=1, fill='both' )
这样你就可以直接在文本框中修改文字了。