Python/wxPython:如何将wx.Choice重置为默认值

Python/wxPython:如何将wx.Choice重置为默认值,python,python-2.7,wxpython,wxwidgets,wxtextctrl,Python,Python 2.7,Wxpython,Wxwidgets,Wxtextctrl,我正在使用wxPython中的多个wx.Choice控件,我需要一个重置按钮来恢复单击时的默认选项“-Select-”。 我无法做到这一点,最近的一次是重置为空选项,这不是我想要的。我希望在按下重置按钮时出现默认选项“-Select-”。请参阅下面的代码 data.py 提前感谢您的时间。请将您的源代码简化为下面解释的最小可运行示例 回答:我很惊讶wx.Choice.SetLabel“”做了一些有用的事情。您想做的是: self.Color_Options.SetStringSelect

我正在使用wxPython中的多个wx.Choice控件,我需要一个重置按钮来恢复单击时的默认选项“-Select-”。 我无法做到这一点,最近的一次是重置为空选项,这不是我想要的。我希望在按下重置按钮时出现默认选项“-Select-”。请参阅下面的代码

data.py


提前感谢您的时间。

请将您的源代码简化为下面解释的最小可运行示例

回答:我很惊讶wx.Choice.SetLabel“”做了一些有用的事情。您想做的是:

    self.Color_Options.SetStringSelection(val)
请参阅wxChoice/wxItemContainer的详细信息

备注:在Python中,u'-Select-'不是'-Select-'。碰巧的是,如果源编码设置为UTF-8,wxPython将不会抱怨并理解UTF-8中的str encoden以及u

最小可运行示例:与以往一样重要:尽可能小的示例将教会您哪些部分与问题相关,哪些部分与问题无关。在许多情况下,通过写一个最小的例子,我常常自己找到答案

尽量减少你的例子:

import wx

class MyFrame1(wx.Frame):
    def __init__(self, *args, **kwds):
        wx.Frame.__init__(self, *args, **kwds)

        pnl = wx.Panel(self, wx.ID_ANY)
        szmain = wx.BoxSizer(wx.VERTICAL)
        color_choices = [u"-- Select --", u"Red", u"Green", u"Pink", u"Blue", u"Yellow", u"White", u"Brown"]
        self.color_options = wx.Choice(pnl, wx.ID_ANY, choices=color_choices)
        self.color_options.SetSelection(0)

        self.reset_button = wx.Button(pnl, wx.ID_ANY, u"Reset")

        szmain.Add(self.color_options, 0, wx.ALL|wx.EXPAND, 4)
        szmain.Add(self.reset_button, 0, wx.ALL|wx.EXPAND, 4)
        pnl.SetSizer(szmain)

        self.reset_button.Bind( wx.EVT_BUTTON, self.OnResetButton )

    def OnResetButton(self, event):
        val = '-- Select --'  # NOT WORKING
        #  val = ' '  # THIS WORKS, BUT RESETS TO EMPTY CHOICE

        self.color_options.SetLabel(val)

app = wx.App(0)
MyFrame1(None).Show()
app.MainLoop()

在转储代码时,最好只转储代码中有问题部分的最小示例,这样您就更有可能获得帮助。您不能在OnResetButton处理程序中调用self.Age_options.SetSelection0,还是我误解了您真正想要实现的目标?谢谢您的建议。调用SetSelection0实现了神奇的效果。谢谢你的意见。如果你认为答案对你的问题是正确的,你可以接受它,勾选upvote/downvote按钮下面的复选标记。
import wx

class MyFrame1(wx.Frame):
    def __init__(self, *args, **kwds):
        wx.Frame.__init__(self, *args, **kwds)

        pnl = wx.Panel(self, wx.ID_ANY)
        szmain = wx.BoxSizer(wx.VERTICAL)
        color_choices = [u"-- Select --", u"Red", u"Green", u"Pink", u"Blue", u"Yellow", u"White", u"Brown"]
        self.color_options = wx.Choice(pnl, wx.ID_ANY, choices=color_choices)
        self.color_options.SetSelection(0)

        self.reset_button = wx.Button(pnl, wx.ID_ANY, u"Reset")

        szmain.Add(self.color_options, 0, wx.ALL|wx.EXPAND, 4)
        szmain.Add(self.reset_button, 0, wx.ALL|wx.EXPAND, 4)
        pnl.SetSizer(szmain)

        self.reset_button.Bind( wx.EVT_BUTTON, self.OnResetButton )

    def OnResetButton(self, event):
        val = '-- Select --'  # NOT WORKING
        #  val = ' '  # THIS WORKS, BUT RESETS TO EMPTY CHOICE

        self.color_options.SetLabel(val)

app = wx.App(0)
MyFrame1(None).Show()
app.MainLoop()