python-如何在笔记本小部件的选项卡上切换事件绑定
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-如何在笔记本小部件的选项卡上切换事件绑定,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3038字,纯文字阅读大概需要5分钟。
内容图文
我有一个基于tkinter和ttk的简单应用程序.我有一个笔记本小部件,应该创建数量有限的选项卡,并且这些选项卡是同一件事.但是我需要对每个动作执行不同的操作.当我按下某个按钮时,将创建一个具有其自己名称的标签,并且事件绑定将集中在该标签上.如果选择上一个通过按下按钮创建的选项卡,则事件绑定既不会关注该选项卡,也不会关注其子窗口小部件,这是我需要解决的问题.我可以在选项卡之间切换事件绑定吗?有什么建议么?
我正在使用python 2.7
解决方法:
请参阅我对how to make instances of event for every single tab on multi tab GUI tkinter( notebook widget)的回答,以查看工作示例.
我使用MyTab类创建具有自己的事件绑定的新选项卡-因此,我可以创建许多相同的选项卡,并且每个选项卡都使用自己的事件绑定.在示例中,当您更改选项卡时,选项卡显示不同的消息.
您没有在问题中附加代码,因此我无法添加更详细的答案.
编辑:
从以前的链接绑定到框架的示例:
>直接在MyTab中:self.bind(“< Button-1>”,self.clickFrame)(在MyTab中为鼠标左键调用功能
>在Application中:tab.bind(“< Button-3>”,self.clickTab)(Application中的鼠标右键调用功能)
码:
#!/usr/bin/env python
from Tkinter import *
import tkMessageBox
import ttk
#---------------------------------------------------------------------
class MyTab(Frame):
def __init__(self, root, name):
Frame.__init__(self, root)
self.root = root
self.name = name
self.entry = Entry(self)
self.entry.pack(side=TOP)
self.entry.bind('<FocusOut>', self.alert)
self.entry.bind('<Key>', self.printing)
self.bind("<Button-1>", self.clickFrame)
#-------------------------------
def alert(self, event):
print 'FocusOut event is working for ' + self.name + ' value: ' + self.entry.get()
#tkMessageBox.showinfo('alert', 'FocusOut event is working for ' + self.name + ' value: ' + self.entry.get())
#-------------------------------
def printing(self, event):
print event.keysym + ' for ' + self.name
#-------------------------------
def clickFrame(self, event):
print "MyTab: click at (" + str(event.x) + ", " + str(event.y) + ') for ' + self.name + " (parent name: " + self.root.tab(CURRENT)['text'] + ")"
#---------------------------------------------------------------------
class Application():
def __init__(self):
self.tabs = {'ky':1}
self.root = Tk()
self.root.minsize(300, 300)
self.root.geometry("1000x700")
self.notebook = ttk.Notebook(self.root, width=1000, height=650)
# self.all_tabs = []
self.addTab('tab1')
self.button = Button(self.root, text='generate', command=self.start_generating).pack(side=BOTTOM)
self.notebook.pack(side=TOP)
#-------------------------------
def addTab(self, name):
tab = MyTab(self.notebook, name)
tab.bind("<Button-3>", self.clickTab)
self.notebook.add(tab, text="X-"+name)
# self.all_tabs.append(tab)
#-------------------------------
def clickTab(self, event):
print "Application: click at (" + str(event.x) + ", " + str(event.y) + ') for ' + event.widget.name
#-------------------------------
def start_generating(self):
if self.tabs['ky'] < 4:
self.tabs['ky'] += 1
self.addTab('tab'+ str(self.tabs['ky']))
#-------------------------------
def run(self):
self.root.mainloop()
#----------------------------------------------------------------------
Application().run()
内容总结
以上是互联网集市为您收集整理的python-如何在笔记本小部件的选项卡上切换事件绑定全部内容,希望文章能够帮你解决python-如何在笔记本小部件的选项卡上切换事件绑定所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。