Параметр комбинированного списка wxpython неправильно устанавливает начальное значение - PullRequest
0 голосов
/ 23 сентября 2019

Я пишу скрипт с приведенным ниже кодом, и он не работает, потому что установка параметра value должна установить начальное значение в выпадающем списке, так как состояние кода и изображений.У кого-нибудь есть решение для этого?

self.algorithms = {...}
self.algorithm = wx.ComboBox(self.pnl, value='--Select--', choices=list(self.algorithms.keys()),
                                     style=wx.CB_READONLY)
self.algorithm.SetPosition((50, 80))

enter image description here

1 Ответ

0 голосов
/ 23 сентября 2019

Это должно работать, если keys в словаре являются строками.

Если нет, вы должны получить сообщение об ошибке:

choices=list(self.algorithms.keys())

choices должно быть list из strings

В этом случае попробуйте:

choices=[str(k) for k in self.algorithms]

.

Вот простой код, который должен работать:

import wx

class Myframe(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None)
        self.my_choices = {"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 )
        self.cbx.Bind(wx.EVT_COMBOBOX, self.on_selection)

    def on_selection(self, evt):
        Choice = self.cbx.GetSelection()
        msg = ""
        for x in self.my_subchoices[Choice]:
            msg += x+"\n"
        self.cbx.SetToolTip(msg)

if __name__ == "__main__":
    App = wx.App()
    Myframe().Show()
    App.MainLoop()

enter image description here

...