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

时间:2015-09-27 23:26:37

标签: wxpython

所以我有一个主菜单设置了一个按钮,打开一个单独的选项窗口。它工作正常,除了我无法在菜单关闭后找到保持我的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()来确保。那么为什么这仍然会发生,是否有不同或更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

我认为你的问题源于SpinCtrl可以接受str / unicodeint这一事实(接受文字对TextCtrl部分有意义,int对“旋转”部分有意义。但是,SpinCtrl.GetValue()将始终返回int,因此将OtherClass.variable始终视为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