wxPython: калькулятор не будет отображать значение в Textctrlenter - PullRequest
0 голосов
/ 16 октября 2018

Я работаю над калькулятором, используя 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 голосов
/ 16 октября 2018

Ваша функция lamba неверна.
Параметр size(40,40) в getBtn должен быть size=(40,40)
Значение Bind должно быть getBtn, а не btn
Переменная one вообще не используется
Вы используете self.clickcount в качестве кнопки id, не используйте -1 или wx.ID_ANY, и wxpython сгенерирует для вас уникальный идентификатор.
Iпредположим, что вы пытаетесь сделать что-то вроде этого:

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":
changeфункция 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...