Wxpython 菜单栏中的wx.TextCtrl字段
在下面的示例中,我为带有恢复选项的菜单列表编码了一个过滤器。它被放置在面板中 我的问题是是否可以在菜单栏中放置wx.TextCtrl字段 这是近似代码。也许还有更好的解决办法?我想做一个用户友好和直观的小部件Wxpython 菜单栏中的wx.TextCtrl字段,wxpython,menubar,wx.textctrl,Wxpython,Menubar,Wx.textctrl,在下面的示例中,我为带有恢复选项的菜单列表编码了一个过滤器。它被放置在面板中 我的问题是是否可以在菜单栏中放置wx.TextCtrl字段 这是近似代码。也许还有更好的解决办法?我想做一个用户友好和直观的小部件 #!/usr/bin/python # -*- coding: utf-8 -*- import wx mlst=["LT1","LT2","LT3","RT1","RT2","RT3","LF1","LF2","LF3","RF1","RF2","RF3"] class Main
#!/usr/bin/python
# -*- coding: utf-8 -*-
import wx
mlst=["LT1","LT2","LT3","RT1","RT2","RT3","LF1","LF2","LF3","RF1","RF2","RF3"]
class MainWidget(wx.Frame):
def __init__(self, parent, title):
super(MainWidget, self).__init__(parent, title=title)
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
hbox=wx.BoxSizer(wx.HORIZONTAL)
st = wx.StaticText(panel, label='Button filter')
self.tc=wx.TextCtrl(panel,size=(40,-1))
hbox.Add(st, flag=wx.RIGHT, border=10)
hbox.Add(self.tc, proportion=.1)
vbox.Add(hbox, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
panel.SetSizer(vbox)
menubar = wx.MenuBar()
self.mButton=wx.Menu()
mr=self.mButton.Append(wx.NewId(),'&Restore')
self.Bind(wx.EVT_MENU, self.OnRestore,mr)
for i,item in enumerate(mlst):
self.mButton.Append(wx.NewId(),item,item)
self.Bind(wx.EVT_TEXT, self.OnText,self.tc)
menubar.Append(self.mButton, '&Button')
self.SetMenuBar(menubar)
#mtitle="{} {}".format(len(mlst),self.mButton.GetLabel() )
def OnRestore(self,event):
itemnames=[ x.GetText() for x in self.mButton.GetMenuItems() ]
for item in mlst:
if item not in itemnames:
self.mButton.Append(wx.NewId(),item,item)
self.tc.ChangeValue('')
def OnText(self, event):
text = self.tc.GetValue()
items=self.mButton.GetMenuItems()
for i,item in enumerate(items):
if i>0:
if text not in item.GetText():
print 'deleting: ',item.GetText()
self.mButton.RemoveItem(item)
print [ x.GetText() for x in self.mButton.GetMenuItems() ]
if __name__ == '__main__':
app = wx.App(redirect=False)
frame = MainWidget(None, "Menu items filter")
frame.Show(True)
app.MainLoop()
我不相信这在普通的菜单小部件中是可能的,因为它们包装了本机小部件,我以前从未在本机菜单中看到过。由于FlatMenu是纯Python的,所以您可能可以使用它。至少,您应该能够破解FlatMenu代码以允许它。否则你需要自己滚
不过,您可以在工具栏(以及FlatMenu工具栏实现)中放置TextCtrl。非常感谢。谢谢你的回答。拉沃斯拉夫