wxPython:计算器不会在Textctrlenter中显示值

时间:2018-10-16 11:33:09

标签: python wxpython

我正在使用wxPyhton开发计算器。我在Textctrlenter中显示值时遇到麻烦。

self.nameTxt = wx.TextCtrl( self, wx.ID_ANY,"",pos=(10,20),size=(260,30))

self.clickcount1 = 1
one = self.clickcount1

getBtn = wx.Button(self, self.clickcount1,label="1",pos=(10,60),size(40,40))
btn.Bind(wx.EVT_BUTTON, lambda btnClick, temp=button_name: 
self.OnButton(btnClick(1), temp) )

1 个答案:

答案 0 :(得分:0)

您的lamba函数不正确。
getBtn中的size(40,40)参数应为size=(40,40)
Bind应该在getBtn上,而不是btn
根本不使用变量one
您将self.clickcount用作按钮id,如果不使用-1wx.ID_ANY,则wxpython会为您生成一个唯一的ID。
我认为您正在尝试执行以下操作:

import wx

class TestFrame(wx.Frame):
    def __init__(self, *args):
        wx.Frame.__init__(self, *args)
        self.nameTxt = wx.TextCtrl( self, wx.ID_ANY,"",pos=(10,20),size=(260,30))
        getBtn1 = wx.Button(self, id=-1, label="1", pos=(10,60), size=(40,40))
        getBtn1.Bind(wx.EVT_BUTTON, lambda event: self.OnButton(event, button=1) )
        getBtn2 = wx.Button(self, id=-1, label="2", pos=(50,60), size=(40,40))
        getBtn2.Bind(wx.EVT_BUTTON, lambda event: self.OnButton(event, button=2) )
        getBtn3 = wx.Button(self, id=-1, label="3", pos=(90,60), size=(40,40))
        getBtn3.Bind(wx.EVT_BUTTON, lambda event: self.OnButton(event, button=3) )
        self.Show()

    def OnButton(self, event, button):
        print ("Button number ", button)
        curr_value = self.nameTxt.GetValue()
        # If a value exists add to it, otherwise display value of pressed button
        try:
            curr_value = int(curr_value) + button
            self.nameTxt.SetValue(str(curr_value))
        except:
            self.nameTxt.SetValue(str(button))

if __name__ == "__main__":
    app = wx.App()
    myframe = TestFrame(None, -1, "Calculator Test")
    app.MainLoop()

enter image description here

关于您对要“ 11111111”的评论:
将功能OnButton更改为:

def OnButton(self, event, button):
    print ("Button number ", button)
    curr_value = self.nameTxt.GetValue()
    curr_value = curr_value + str(button)
    self.nameTxt.SetValue(curr_value)