37,719
社区成员
发帖
与我相关
我的任务
分享
import wx
class Form(wx.Frame):
def __init__(self):
super().__init__(parent=None, title="", size=(400, 130))
self.Center()
panel = wx.Panel(parent=self)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
list1 = ['A', 'B', "C"]
ch1 = wx.ComboBox(panel, -1, value='', choices=list1, style=wx.CB_SORT)
ch1.SetSelection(1)
self.ch1 = ch1
btn1 = wx.Button(panel, -1, "change1")
self.Bind(wx.EVT_BUTTON, self.on_button1, btn1)
hbox1.Add(ch1, 1, flag=wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
hbox1.Add(btn1, 1, flag=wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
list2 = ['1', '2']
ch2 = wx.Choice(panel, -1, choices=list2)
btn2 = wx.Button(panel, -1, "change2")
self.Bind(wx.EVT_BUTTON, self.on_button2, btn2)
hbox2.Add(ch2, 1, flag=wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
hbox2.Add(btn2, 1, flag=wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
ch2.SetSelection(1)
self.ch2 = ch2
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox1, 1, flag=wx.ALL | wx.EXPAND, border=5)
vbox.Add(hbox2, 1, flag=wx.ALL | wx.EXPAND, border=5)
panel.SetSizer(vbox)
def change_next(self, ch):
c = ch.GetCount()
i = ch.GetSelection()
i += 1
if i >= c: i = 0
ch.SetSelection(i)
def on_button1(self, event):
self.change_next(self.ch1)
def on_button2(self, event):
self.change_next(self.ch2)
class App(wx.App):
def OnInit(self):
frame=Form()
frame.Show()
return True
def OnExit(self):
return 0
if __name__=='__main__':
app=App()
app.MainLoop()
SetSelection(1)没发现有什么问题
[/q]
谢谢,其实用SetValue就可以了,我原来弄错了
import wx
class Form(wx.Frame):
def __init__(self):
super().__init__(parent=None, title="", size=(400, 130))
self.Center()
panel = wx.Panel(parent=self)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
list1 = ['A', 'B', "C"]
ch1 = wx.ComboBox(panel, -1, value='', choices=list1, style=wx.CB_SORT)
ch1.SetSelection(1)
self.ch1 = ch1
btn1 = wx.Button(panel, -1, "change1")
self.Bind(wx.EVT_BUTTON, self.on_button1, btn1)
hbox1.Add(ch1, 1, flag=wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
hbox1.Add(btn1, 1, flag=wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
list2 = ['1', '2']
ch2 = wx.Choice(panel, -1, choices=list2)
btn2 = wx.Button(panel, -1, "change2")
self.Bind(wx.EVT_BUTTON, self.on_button2, btn2)
hbox2.Add(ch2, 1, flag=wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
hbox2.Add(btn2, 1, flag=wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
ch2.SetSelection(1)
self.ch2 = ch2
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox1, 1, flag=wx.ALL | wx.EXPAND, border=5)
vbox.Add(hbox2, 1, flag=wx.ALL | wx.EXPAND, border=5)
panel.SetSizer(vbox)
def change_next(self, ch):
c = ch.GetCount()
i = ch.GetSelection()
i += 1
if i >= c: i = 0
ch.SetSelection(i)
def on_button1(self, event):
self.change_next(self.ch1)
def on_button2(self, event):
self.change_next(self.ch2)
class App(wx.App):
def OnInit(self):
frame=Form()
frame.Show()
return True
def OnExit(self):
return 0
if __name__=='__main__':
app=App()
app.MainLoop()
SetSelection(1)没发现有什么问题