无法弄清楚为什么将 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
/unicode
和 int
(接受文本对 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
所以我设置了一个主菜单,其中有一个按钮可以打开一个单独的选项 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
/unicode
和 int
(接受文本对 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