无法弄清楚为什么将 wx.SpinCtrl "value=" 设置为变量不起作用

Can't figure out why setting wx.SpinCtrl "value=" to variable isn't working

所以我设置了一个主菜单,其中有一个按钮可以打开一个单独的选项 window。它工作正常,除了我找不到在菜单关闭后保留我的 spincontrol 小部件的值的方法。这是我当前的代码:

 self.spincontrol = wx.SpinCtrl(self.optionmenupanel, value=OtherClass.variable, size=(60,-1))

关闭选项菜单后,运行:

OtherClass.variable = self.spincontrol.GetValue()
str(OtherClass.variable)

问题是,我收到错误:

TypeError: String or Unicode type required

这个变量应该是一个字符串,我什至用str()来确定。那么为什么这种情况仍然发生,是否有不同或更好的方法来做到这一点?

我认为您的问题源于 SpinCtrl 可以接受 str/unicodeint(接受文本对 TextCtrl 部分,int 对 "spin" 部分有意义。但是,SpinCtrl.GetValue() 将始终 return 和 int,因此处理 [=19 是有意义的=] 总是 int.

所以最好使用:

    val = OtherClass.variable
    self.spinctrl = ...(..., value="", ...) # value only can be ``str`` !
    self.spinctrl.SetValue(val) # will accept ``str`` and ``int``

    self.spinctrl.Bind(wx.EVT_SPINCTRL, self.on_spin)

def on_spin(self, evt):
    res = self.spin.GetValue()
    assert isinstance(res, int)
    OtherClass.variable = res