如何解决使用什么绑定来检测 FlatNotebook 标签页关闭 vis FNB_X_ON_TAB
我正在使用 wxPython FlatNotebook 小部件并启用了 FNB_X_ON_TAB 样式。但是这个动作会触发什么绑定事件(点击选项卡中的 x 关闭它)?
import wx
import wx.lib.agw.flatnotebook as fnb
class MyFrame(wx.Frame):
def __init__(self,parent):
wx.Frame.__init__(self,parent,-1,"FlatNotebook Demo")
panel = wx.Panel(self)
notebook = fnb.FlatNotebook(panel,-1)
self.Bind(fnb.EVT_FLATNOTEBOOK_PAGE_CLOSED,self.popup_close_tab,id=100)
for i in range(3):
caption = "Page %d" % (i + 1)
notebook.AddPage(self.CreatePage(notebook,caption),caption)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(notebook,1,wx.ALL | wx.EXPAND,5)
panel.SetSizer(sizer)
def CreatePage(self,notebook,caption):
'''
Creates a simple :class:`Panel` containing a :class:`TextCtrl`.
:param `notebook`: an instance of `FlatNotebook`;
:param `caption`: a simple label.
'''
p = wx.Panel(notebook)
wx.StaticText(p,caption,(20,20))
wx.TextCtrl(p,"",40),(150,-1))
return p
def popup_close_tab(self,event):
print("popup_close_tab")
#self.close_tab()
# our normal wxApp-derived class,as usual
app = wx.App(0)
frame = MyFrame(None)
app.SetTopWindow(frame)
frame.Show()
app.MainLoop()
解决方法
您正在将 Id
命令中的小部件 Bind
强制设置为 100。
但是没有设置为 100 的 Id。
您有多种选择:
- 将笔记本 ID 设置为 100
- 假设您只有 1 个 FlatNotebook,将 Id 排除在 Bind 之外
- 获取绑定中的Id
- 绑定到不是自己的小部件
所以:
notebook = fnb.FlatNotebook(panel,100)
self.Bind(fnb.EVT_FLATNOTEBOOK_PAGE_CLOSED,self.popup_close_tab)
self.Bind(fnb.EVT_FLATNOTEBOOK_PAGE_CLOSED,self.popup_close_tab,id=notebook.GetId())
notebook.Bind(fnb.EVT_FLATNOTEBOOK_PAGE_CLOSED,self.popup_close_tab)
这是一个非常灵活的系统,但是当您做出少数几个选择之一时,意外离开了建筑物,这将不起作用。 :)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。