【发布时间】:2013-11-10 10:34:45
【问题描述】:
这是我的代码..我需要事件绑定同时为所有选项卡工作..问题是当生成新选项卡时,事件绑定将与最后生成的选项卡相关,并且不再为 pre -生成的标签..请帮助--(python 2.7)
#!/usr/bin/env python
import Tkinter
from Tkinter import *
import tkMessageBox
import ttk
root = Tkinter.Tk()
root.minsize(300,300)
root.geometry("1000x700")
body=ttk.Notebook(root,width=1000,height=650,)
tabs={'ky':1}
def generate_tabs(tab,name):
tab=Tkinter.Frame(body)
entry=Entry(tab).pack(side=TOP)
def alert(event):
tkMessageBox.showinfo('alert1','FocusOut event is working for '+name)
def printing(event):
print event.keysym+' for '+name
root.bind("<Key>",printing)
tab.bind_class('Entry',"<FocusOut>",alert)
body.add(tab,text=name)
def start_generating():
if tabs['ky']==4:pass
elif tabs['ky']==3: generate_tabs('tab4','tab4') ; tabs['ky']=4
elif tabs['ky']==2: generate_tabs('tab3','tab3') ; tabs['ky']=3
elif tabs['ky']==1: generate_tabs('tab2','tab2') ; tabs['ky']=2
else:pass
generate_tabs('tab1','tab1')
button=Button(root,text='generate',command=start_generating).pack(side=LEFT)
body.pack(side=TOP)
root.mainloop()
【问题讨论】:
-
方便,我们都是自愿来这里帮忙的。至于您的问题,如果您提供更多上下文并更详细地描述您要达到的目标,您可能会得到更好的答复。此外,您发布的代码也存在一些问题。为什么 Tkinter 同时导入为
import Tkinter和from Tkinter import *?如果您像在函数第一行中那样重新定义tab,您是否意识到generate_tabs()的tab参数并没有真正使用? -
你好..我想我解释清楚了..如果你运行代码你会明白我想要实现的目标..我唯一想要的是选择一个标签并输入或专注;事件必须与选定的(聚焦)选项卡相关,而不是与未选择的选项卡相关...观看控制台时您会清楚这一点..
-
顺便说一句,我更改了 generate_tabs 函数的第一行并像这样调用函数 generate_tabs(Tkinter.Frame(body),'tab1')..但仍然是同样的问题
标签: python events tabs tkinter