已有395人关注
GUI下,text获取的字符串转换为浮点型数据怎么处理?
发表在Python答疑区 2020-02-13
是否精华
版块置顶:

我在学习GUI界面编程后,做一个简单的加法计算器,文本框接受输入的字符,但是不会转浮点型,试了很多种方法都没解决。请教如何转换。 加法事件在OnClickMath 函数处, 目前的计算结果是1+1=11,1+2=12,是字符串合并。

WeChat Screenshot_20200213093905.png

import wx
class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,"计算器",size=(600,500))
        panel=wx.Panel(self)

        #创建一个标题
        self.title=wx.StaticText(panel,label="加法计算器")
        #创建第一个文本输入框
        self.box1=wx.TextCtrl(panel,style=wx.TE_CENTER)
        #创建一个加号
        self.puls=wx.StaticText(panel,label="+")
        #创建第二个文本输入框
        self.box2=wx.TextCtrl(panel,style=wx.TE_CENTER)
        #创建等号
        self.equr=wx.StaticText(panel,label="=")
        #创建结果框
        self.box3=wx.TextCtrl(panel,style=wx.TE_CENTER)
        #创建一个计算按钮
        self.math=wx.Button(panel,label="计算")
        self.math.Bind(wx.EVT_BUTTON,self.OnClickMath)
        #创建一个清除按钮
        self.clean=wx.Button(panel,label="清空")
        self.clean.Bind(wx.EVT_BUTTON,self.OnClickClean)
        #创建一个退出按钮
        self.exit=wx.Button(panel,label="退出")
        self.exit.Bind(wx.EVT_BUTTON,self.OnClickExit)

        #创建容器
        #第一横向盒
        hsizer_math=wx.BoxSizer(wx.HORIZONTAL)
        hsizer_math.Add(self.box1,proportion=0,flag=wx.ALL,border=5)
        hsizer_math.Add(self.puls,proportion=1,flag=wx.ALL,border=5)
        hsizer_math.Add(self.box2,proportion=2,flag=wx.ALL,border=5)
        hsizer_math.Add(self.equr,proportion=3,flag=wx.ALL,border=5)
        hsizer_math.Add(self.box3,proportion=4,flag=wx.ALL,border=5)
        #第二横向盒
        hsizer_click=wx.BoxSizer(wx.HORIZONTAL)
        hsizer_click.Add(self.math,proportion=0,flag=wx.ALL,border=15)
        hsizer_click.Add(self.clean,proportion=0,flag=wx.ALL,border=15)
        hsizer_click.Add(self.exit,proportion=0,flag=wx.ALL,border=15)
        #一个竖盒
        vsizer=wx.BoxSizer(wx.VERTICAL)
        vsizer.Add(self.title,proportion=0,flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTER,border=15)
        vsizer.Add(hsizer_math,proportion=0,flag=wx.ALL,border=45)
        vsizer.Add(hsizer_click,proportion=0,flag=wx.ALL,border=65)
        panel.SetSizer(vsizer)


    #定义OnclickMath函数
    def OnClickMath(self,event):
        text1=self.box1.GetValue()
        text2=self.box2.GetValue()
        text3=text1+text2
        self.box3.SetValue(text3)
    #定义OnclickMath函数
    def OnClickClean(self,event):
        self.box1.SetValue("")
        self.box2.SetValue("")
        self.box3.SetValue("")
    #定义OnclickMath函数
    def OnClickExit(self,event):
        self.Close()

if __name__ == "__main__":
    app=wx.App()
    frame=MyFrame(parent=None,id=-1)
    frame.Show()
    app.MainLoop()


分享到:
精彩评论 3
无语_mrkj
学分:3155 LV11
2020-02-13
沙发

在计算前将字符串类型的变量转换为数据型再计算就不会出现1+1=11,1+2=12这个情况了。

年过完了_1583065294
学分:18 LV2
2020-02-13
板凳

无语_mrkj 发表于2020-02-13 14:21

在计算前将字符串类型的变量转换为数据型再计算就不会出现1+1=11,1+2=12这个情况了。

老师您好,一直没转成功,不得要领。

text1=float(self.box1.GetValue())
text2=float(self.box2.GetValue())
text3=text1+text2
这样不行。
text1=self.box1.GetValue()
a=float(text1)
text2=self.box2.GetValue()
b=float(text2)
text3=a+b
还是不行。


年过完了_1583065294
学分:18 LV2
2020-02-13
地板

问题解决了,问题出在

self.box3.SetValue(text3) 只接受字符串,不接受浮点型数据. 把text3的结果从浮点型转换为字符型就可以了.


首页上一页 1 下一页尾页 3 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照