我在我的组合框中有第一个列表(可见,Infrarouge,模拟),我需要创建列表2(VIS04,VIS05,VIS06,ir039,IR087,IR103,SIM1,SIM2,SIM2),就像我在可见的时候点击我一样有类似菜单:VIS04,VIS05,VIS06和相同的infrarouge和模拟像图像描述:
enter image description here enter image description here
我怎么能有像图像描述的菜单,当我点击鼠标右键在可见或其他选择组合框我有菜单与列表选择?或所有其他建议可能
我在python3中使用wxpython
这是我的代码的一部分:
class MainPanel(wx.Panel):
def __init__(self, parent):
super().__init__(parent)
wx.Frame.__init__(self, parent,size = (250,250))
self.splitter = wx.SplitterWindow(self, -1, size = (500,500))
#panelone
pan1 =wx.Window(self.splitter, style=wx.DEFAULT_FRAME_STYLE)
pan1.SetBackgroundColour("white")
#paneltwo
pan2 = wx.Window(self.splitter, style=wx.DEFAULT_FRAME_STYLE)
pan2.SetBackgroundColour("white")
#combobox
List1 = ['Infra', 'Vis','simulat']
combobox = wx.ComboBox(pan2, id=wx.ID_ANY, choices = List1, style=wx.CB_DROPDOWN,pos=(80,5))
一些帮助或例子请
我是wxpython的新手
感谢你
您的问题和代码参考wx.ComboBox
,但您的图像示例是弹出菜单。我假设您正在尝试实现以下目标:
import wx
class myPanel(wx.Frame):
def __init__(self, *args, **kwds):
wx.Frame.__init__(self, *args, **kwds)
self.panel = wx.Panel(self)
text = wx.StaticText(self.panel, -1, "Right click on this panel for a popup menu")
self.Bind(wx.EVT_CONTEXT_MENU, self.ShowPopup)
self.Show()
def ShowPopup(self, event):
popmenu = wx.Menu()
visible = wx.Menu()
visible.Append( -1, "VIS04")
visible.Append( -1, "VIS05")
visible.Append( -1, "VIS06")
visible.Append( -1, "VIS07")
popmenu.Append( -1, "Visible", visible)
infrared = wx.Menu()
infrared.Append( -1, "IR04")
infrared.Append( -1, "IR05")
infrared.Append( -1, "IR06")
infrared.Append( -1, "IR07")
popmenu.Append( -1, "Infrared", infrared)
simulation = wx.Menu()
simulation.Append( -1, "SIM04")
simulation.Append( -1, "SIM05")
simulation.Append( -1, "SIM06")
simulation.Append( -1, "SIM07")
popmenu.Append( -1, "Simulation", simulation)
self.Bind(wx.EVT_MENU, self.OnChoice)
self.PopupMenu(popmenu)
popmenu.Destroy()
def OnChoice(self, event):
id = event.GetId()
obj = event.GetEventObject()
print("Option chosen",obj.GetLabelText(id))
if __name__ == '__main__':
app = wx.App()
myPanel(None)
app.MainLoop()