我正在编写一个wx应用程序,其中输入TextCtrl-boxes的值将用作函数的参数。这不起作用,我开始怀疑这是因为它们从一开始就没有被正确阅读。我有一个窗口,其中包含一些这些框,并使用GetValue()函数从中获取值,如下所示:
var = tc1.GetValue()
这会导致错误进一步向下的行,其中值不被视为整数,因为它们应该是。我尝试用这一行纠正这个问题:
var = int(tc1.GetValue())
这给出了错误消息“值错误:对于带有基数为10的int()的无效文字:”。我不知道这意味着什么。
我该怎么办?
答案 0 :(得分:2)
如果您尝试将非整数或浮点数字符串转换为整数,则会出现此错误。最好的办法是设置一个try: - except:
块来处理这个错误。
尝试这样的事情:
import wx
class Frame(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self, parent, id,
'Read Number',
size = (200,150),
style=wx.MINIMIZE_BOX | wx.RESIZE_BORDER
| wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)
self.initUI()
def initUI(self):
widgetPanel=wx.Panel(self, -1)
Button = wx.Button(widgetPanel, -1, "Read", pos=(10,10), size=(30,30))
self.Bind(wx.EVT_BUTTON, self.read, Button)
Button.SetDefault()
self.Text = wx.TextCtrl(widgetPanel, -1, "", pos=(10, 50),
size =(100,30), style=wx.TE_CENTER)
self.Text.SetFont(wx.Font(20, wx.DECORATIVE, wx.NORMAL, wx.NORMAL))
def read(self, event):
try:
var = int(float(self.Text.GetValue()))
wx.MessageDialog(self, "You entered %s"%var, "Number entered", wx.OK | wx.ICON_INFORMATION).ShowModal()
except:
wx.MessageDialog(self, "Enter a number", "Warning!", wx.OK | wx.ICON_WARNING).ShowModal()
if __name__ == "__main__":
app = wx.App(False)
frame = Frame(parent=None,id=-1)
frame.Show()
app.MainLoop()
答案 1 :(得分:1)
考虑使用wx.lib.intctrl.IntCtrl
它提供了一个控件,它接受并返回整数 value,并提供边界支持和可选的值限制。
答案 2 :(得分:0)
尝试
var = float(tc1.GetValue())
我不知道确切的值是什么,如果你想要施放的数字是小数或不小数,但是如果它应该有效。
此外,如果您尝试隐藏的字符串值(tc1.GetValue())为空,您也会收到此错误。