【问题标题】:How to change the tab of ttk.Notebook如何更改 ttk.Notebook 的选项卡
【发布时间】:2015-01-01 11:48:12
【问题描述】:

我有一个ttk.Notebook,我想通过一个按钮切换到另一个标签。
我怎样才能做到这一点?

看起来更改标签状态(normaldisabledhidden)并不能解决我的问题,因为我不想禁用任何标签。

这是我的代码:

import time
import ttk as ttk
import Tkinter as tk

root=tk.Tk()

root.config(width=300,height=220)

notebook=ttk.Notebook(root)
notebook.place(x=0,y=0)

tabList=[]
i=0
while i<6:    
     tabList.append(tk.Frame(root))
     tabList[i].config(width=300,height=150,background='white')
     i+=1

i=0
while i<6: 
    notebook.add(tabList[i],text='tab'+str(i))
    i+=1

def fLoopTabs():
    i=0
    while i<6:
         notebook.select(i)
         time.sleep(2)
         #Here goes the Screenshot function
         i+=1

 button=ttk.Button(root,text='Loop',command=fLoopTabs)
 button.place(x=20,y=180)

 root.mainloop()

【问题讨论】:

    标签: python tkinter ttk


    【解决方案1】:

    查看以下链接:
    Python Docs 如果您看到应该执行您所追求的选择方法,那么就像这样:

    notebook.select(tab_id)
    

    选项卡 ID 可以采用多种形式(参见第 24.2.5.3 节),但最有用的是整数(我认为这是类似于列表使用索引的索引)或您希望的选项卡名称切换到。

    【讨论】:

    • 感谢您的回答。我试图在循环中使用它,这样我就可以截取每个打开的笔记本选项卡。 select(i) 在循环中不起作用。我已经尝试使用 time.sleep(5) 检查所有选项卡是否都打开了。只有最后一个会打开。
    • 当您在循环中使用它时,请问您如何将用户界面放入其消息循环中? time.sleep 是一个阻塞调用,如果不进入消息循环(mainloop),界面将不会更新,直到循环退出,假设你可以在睡眠之前调用 root.update,或者你可以使用穿线
    • 感谢您的帮助我更新了问题中的代码。
    • 正如我所想,您需要让用户界面响应消息,对于您当前的目的,最简单的方法是在笔记本之间添加一行“root.update()”。选择线和 time.sleep 线
    猜你喜欢
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多