0

我正在尝试为 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

任何帮助是极大的赞赏!!谢谢!

4

1 回答 1

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__()方法,它会为您提供有关该方法或其所属对象的一般信息

于 2021-01-11T13:41:04.920 回答