1 回答

TA貢獻(xiàn)2039條經(jīng)驗 獲得超8個贊
keys如果字典中的 是字符串,那應(yīng)該可以工作。
如果不是,您應(yīng)該從以下位置收到錯誤:
choices=list(self.algorithms.keys())
choices應(yīng)該list是strings
在這種情況下嘗試:
choices=[str(k) for k in self.algorithms]
反而。
編輯風(fēng)格wx.CB_READONLY
字符串必須在組合框選項列表中
這不是其他樣式的情況
因此,如果將索引用于該選擇,則必須小心
這是一些應(yīng)該可以工作的簡單代碼:
import wx
class Myframe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.my_choices = {"Choose a sport":0,"Board Sports":1,"Ball Sports":2,"Fight Sports":3}
#self.my_choices = ["Board Sports","Ball Sports","Fight Sports"]
self.my_subchoices = [[],["Skate boarding","Surfing","Ski boarding"],["Football","Cricket","Rugby"],["Boxing","Wrestling","Karate"]]
pan = wx.Panel(self)
self.cbx = wx.ComboBox(pan, -1, value = "Choose a sport", pos=(10,30), size=(300,30),choices=list(self.my_choices),style=wx.CB_DROPDOWN | wx.CB_READONLY )
self.cbx.Bind(wx.EVT_COMBOBOX, self.on_selection)
def on_selection(self, evt):
Choice = self.cbx.GetSelection()
msg = ""
#
# Ignore choice 0 because of style wx.CB_READONLY or include a blank entry
# for choice 0 in my_subchoices
for x in self.my_subchoices[Choice]:
msg += x+"\n"
self.cbx.SetToolTip(msg)
if __name__ == "__main__":
App = wx.App()
Myframe().Show()
App.MainLoop()
添加回答
舉報