Python 解决问题组合框和文本Ctrl
我希望在组合框中选择元素时,根据我选择的项目打印TextCtrl元组中的消息 当我按照我调查的方式做的时候,我犯了一个错误Python 解决问题组合框和文本Ctrl,python,python-2.7,wxpython,Python,Python 2.7,Wxpython,我希望在组合框中选择元素时,根据我选择的项目打印TextCtrl元组中的消息 当我按照我调查的方式做的时候,我犯了一个错误 import wx #Mods Nom_Mods = ["Alca v3", "Barcelone v1", "Anti-Fed (French)", "Elegance v3"] Info_Mods = ["(ZL + Joystick2) To Open Menu\n(B) To close Menu\nCreate by KillerGamer81"] #EndMo
import wx
#Mods
Nom_Mods = ["Alca v3", "Barcelone v1", "Anti-Fed (French)", "Elegance v3"]
Info_Mods = ["(ZL + Joystick2) To Open Menu\n(B) To close Menu\nCreate by KillerGamer81"]
#EndMods
class PageOne(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
sz = wx.BoxSizer(wx.VERTICAL)
#Controls
self.Listade_Menus = wx.ComboBox(self, -1, pos=(10,80), size=(173,22), choices = Nom_Mods, style= wx.CB_READONLY)
Cuadro_de_info = wx.TextCtrl(self, -1, "", pos=(200,80), size=(175,80), style = wx.TE_MULTILINE|wx.TE_NO_VSCROLL|wx.TE_READONLY)
class MainFrame(wx.Frame):
def __init__(self):
no_sys_menu = wx.DEFAULT_FRAME_STYLE & (~wx.RESIZE_BORDER) & (~wx.MAXIMIZE_BOX)
wx.Frame.__init__(self, None, title="ProyectoU", style=no_sys_menu, size=(400,225))
ico = wx.Icon('Recursos/icono.ico', wx.BITMAP_TYPE_ICO)
self.SetIcon(ico)
# Here we create a panel and a notebook on the panel
p = wx.Panel(self)
nb = wx.Notebook(p)
# create the page windows as children of the notebook
page1 = PageOne(nb)
# add the pages to the notebook with the label to show on the tab
nb.AddPage(page1, "Inyec/Conec")
# finally, put the notebook in a sizer for the panel to manage
# the layout
sizer = wx.BoxSizer()
sizer.Add(nb, 1, wx.EXPAND)
p.SetSizer(sizer)
if __name__ == "__main__":
app = wx.App()
MainFrame().Show()
app.MainLoop()
第一个错误是缩进错误
问题在于,您没有将绑定到组合框事件,即当您做出选择时,将触发一个事件,必须捕获该事件并对其采取行动。
您需要捕获该事件,并将当前从组合框(或任何内容)中选择的文本放入textctrl。目前,您没有尝试这样做 这是我想你想要的
import wx
#Mods
Nom_Mods = ["Alca v3", "Barcelone v1", "Anti-Fed (French)", "Elegance v3"]
Info_Mods = ["(ZL + Joystick2) To Open Menu\n(B) To close Menu\nCreate by KillerGamer81"]
#EndMods
class PageOne(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
sz = wx.BoxSizer(wx.VERTICAL)
#Controls
self.Listade_Menus = wx.ComboBox(self, -1, pos=(10,80), size=(173,22), choices = Nom_Mods, style= wx.CB_READONLY)
#Bind a callback to the event emitted by the Combobox selection
self.Listade_Menus.Bind(wx.EVT_COMBOBOX, self.Nom_Mods_Selected)
self.Cuadro_de_info = wx.TextCtrl(self, -1, "", pos=(200,80), size=(175,80), style = wx.TE_MULTILINE|wx.TE_NO_VSCROLL|wx.TE_READONLY)
# When a selection is made populate the textctrl with the selected text
def Nom_Mods_Selected(self, event):
self.Cuadro_de_info.SetValue(self.Listade_Menus.GetStringSelection())
class MainFrame(wx.Frame):
def __init__(self):
no_sys_menu = wx.DEFAULT_FRAME_STYLE & (~wx.RESIZE_BORDER) & (~wx.MAXIMIZE_BOX)
wx.Frame.__init__(self, None, title="ProyectoU", style=no_sys_menu, size=(400,225))
ico = wx.Icon('Recursos/icono.ico', wx.BITMAP_TYPE_ICO)
self.SetIcon(ico)
# Here we create a panel and a notebook on the panel
p = wx.Panel(self)
nb = wx.Notebook(p)
# create the page windows as children of the notebook
page1 = PageOne(nb)
# add the pages to the notebook with the label to show on the tab
nb.AddPage(page1, "Inyec/Conec")
# finally, put the notebook in a sizer for the panel to manage
# the layout
sizer = wx.BoxSizer()
sizer.Add(nb, 1, wx.EXPAND)
p.SetSizer(sizer)
if __name__ == "__main__":
app = wx.App()
MainFrame().Show()
app.MainLoop()
什么错误?我们看不到你的屏幕,也看不懂你的心思。不要期望我们运行代码看到这个错误(此外,它可以在我们的计算机上正常工作)。始终将完整的错误消息(完整回溯)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。我有缩进错误,因为当我写文章时,我把代码写错了。实际上想要打印元组中的消息(Info_Mods)。但多亏了你,我已经明白我该怎么做了。