【问题标题】:GetSelection method for combobox doesn't work in wxPython组合框的 GetSelection 方法在 wxPython 中不起作用
【发布时间】:2021-01-11 13:14:12
【问题描述】:

我正在尝试为 youtube-dl 制作一个 GUI

我使用 wxFormBuilder 制作 GUI 布局,然后通过导入 wxFormBuilder 生成的代码进入另一个脚本中的代码。 GUI 工作正常,但我无法获得从下拉菜单中选择的值的索引。

这是定义组合框属性的代码部分

quality_selection_drop_downChoices = [ u"720p", u"Best Quality Available", u"Audio (mp3)", u"Non Youtube" ]
self.quality_selection_drop_down = wx.ComboBox( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( -1,-1 ), quality_selection_drop_downChoices, 0 )
self.quality_selection_drop_down.SetSelection( 4 )
gbSizer1.Add( self.quality_selection_drop_down, wx.GBPosition( 2, 1 ), wx.GBSpan( 1, 3 ), wx.ALL|wx.EXPAND, 5 )

这是我为检查组合框值是否正确返回而编写的代码

def video_dl(self, event):
    print(self.quality_selection_drop_down.GetSelection)

video_dl 命令被设置为 GUI 中按钮的事件。它返回

<built-in method GetSelection of ComboBox object at 0x0000017820621670>

而不是给出我选择的选择的索引。我尝试使用 GetSelection、GetCurrentSelection、GetValue、GetString、GetStringSelection。它们都以与上述相同的方式返回输出。 整个代码在 github 上,你可以看一下整个代码:github repo

非常感谢任何帮助!谢谢!

【问题讨论】:

    标签: python user-interface combobox wxpython wxformbuilder


    【解决方案1】:

    错误在于,当您获得选择时,您会这样做:

    self.quality_selection_drop_down.GetSelection
    

    而不是这个:

    self.quality_selection_drop_down.GetSelection() #returns the index of the combobox
    self.quality_selection_drop_down.GetStringSelection() #returns the string associated to the combobox
    

    请记住,当您调用一个方法或一个函数时,您必须使用像foo() 这样的左方括号和右方括号来调用它。不带括号调用它你调用它的__repr__() 方法,它为你提供了关于方法或它所属的对象的一般信息

    【讨论】:

    • 这行得通。谢谢,我很生气,我忘了把()放在函数前面。在过去的 3 天里,我一直为此发疯。
    • @ShalmonAnandas 从好的方面来说,你永远不会再犯这个错误了。经验是最好的老师。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 2013-03-01
    • 1970-01-01
    相关资源
    最近更新 更多