简体   繁体   English

Python:专注于ttk.Notebook标签

[英]Python: Focus on ttk.Notebook tabs

I haven't figured out how to set the focus on a specific tab of a ttk.Notebook. 我还没想出如何将焦点设置在ttk.Notebook的特定选项卡上。 focus_set does not work. focus_set不起作用。 Is there any possibility? 有可能吗?

Thanks in advance 提前致谢

I was having the same problem. 我遇到了同样的问题。 What I found is the 'select' method for notebooks (ttk.Notebook.select(someTabFrame)) solves this problem: 我发现笔记本的'select'方法(ttk.Notebook.select(someTabFrame))解决了这个问题:

import ttk, Tkinter

mainWindow = Tkinter.Tk()

mainFrame = Tkinter.Frame(mainWindow, name = 'main-frame')
mainFrame.pack(fill = Tkinter.BOTH) # fill both sides of the parent

nb = ttk.Notebook(mainFrame, name = 'nb')
nb.pack(fill = Tkinter.BOTH, padx=2, pady=3) # fill "master" but pad sides

tab1Frame = Tkinter.Frame(nb, name = 'tab1')
Tkinter.Label(tab1Frame, text = 'this is tab 1').pack(side = Tkinter.LEFT)
nb.add(tab1Frame, text = 'tab 1')

tab2Frame = Tkinter.Frame(nb, name = 'tab2')
Tkinter.Label(tab2Frame, text = 'this is tab 2').pack(side = Tkinter.LEFT)
nb.add(tab2Frame, text = 'tab 2')

nb.select(tab2Frame) # <-- here's what you're looking for

mainWindow.mainloop()

python docs for ttk.Notebook: https://docs.python.org/2/library/ttk.html#ttk.Notebook ttk.Notebook的python docs: https ://docs.python.org/2/library/ttk.html#ttk.Notebook

I also used this blog post as a model for my code: http://poquitopicante.blogspot.com/2013/06/blog-post.html 我还将此博客文章用作我的代码的模型: http//poquitopicante.blogspot.com/2013/06/blog-post.html

This code based on wordsforthewise 's answer to this question. 这段代码基于wordsforthewise对这个问题的回答。 Here you can find example of using select as get and set function, it shown by button that switch between 2 tabs. 在这里您可以找到使用select作为get和set函数的示例,它通过在2个选项卡之间切换的按钮显示。

small improvement: 小改进:

import ttk, Tkinter
from pango import Weight
from Tkinter import Button


tab2Frame = None
tab1Frame = None

def switchTab():
    if nb.select()[-1] == "1":
        nb.select(tab2Frame)
    elif nb.select()[-1] == "2":
        nb.select(tab1Frame)

mainWindow = Tkinter.Tk()

mainWindow.geometry("%dx%d+0+0" % (200, 200))
mainFrame = Tkinter.Frame(mainWindow, name = 'main-frame')
mainFrame.pack(fill = Tkinter.BOTH) # fill both sides of the parent

button = Button(mainWindow, text = "Switch", command = switchTab)
button.configure(width = 15, activebackground = "#6f6Fff")
button.pack()

nb = ttk.Notebook(mainFrame, name = 'nb')
nb.pack(fill = Tkinter.BOTH, padx=2, pady=3) # fill "master" but pad sides

tab1Frame = Tkinter.Frame(nb, name = 'tab1')
Tkinter.Label(tab1Frame, text = 'this is tab 1').pack(side = Tkinter.LEFT)
nb.add(tab1Frame, text = 'tab 1')

tab2Frame = Tkinter.Frame(nb, name = 'tab2')
Tkinter.Label(tab2Frame, text = 'this is tab 2').pack(side = Tkinter.LEFT)
nb.add(tab2Frame, text = 'tab 2')

mainWindow.mainloop()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM