2016-07-13 8 views
0

Ich möchte eine numerische Tastatur entwerfen und weiß nicht, welche Funktion für die Echtzeitanzeige verwendet wird, wenn ich auf eine Schaltfläche klicke. Beispiel 1 wird in der textctrl angezeigt, wenn die Taste 1 wie eine Taschenrechneranzeige angeklickt wird . Und es kann wie 1234 angezeigt werden, wenn 1234 Schaltflächen in Serie geklickt werden. Und ich frage mich, wie kann ich Backspace, klare Funktionen dieserNumerische Tastatur

import wx 

class iCal(wx.Frame): 

    def __init__(self): 
     wx.Frame.__init__(self, None, wx.ID_ANY, "Text") 
     panel = MainPanel(self) 

class MainPanel(wx.Panel): 

    def __init__(self, parent): 
     wx.Panel.__init__(self, parent=parent) 
     self.frame = parent 

     text_1 = wx.TextCtrl(self, value=float(num)) 

     button_0 = wx.Button(self, label="0")   
     button_1 = wx.Button(self, label="1") 
     button_2 = wx.Button(self, label="2") 

     button_0.Bind(wx.EVT_LEFT_DOWN,self.output0) 
     button_1.Bind(wx.EVT_LEFT_DOWN,self.output1) 
     button_2.Bind(wx.EVT_LEFT_DOWN,self.output2) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     sizer.Add(text_1, 0, wx.ALL|wx.CENTER, 5) 
     sizer.Add(button_0, 0, wx.ALL|wx.CENTER, 5) 
     sizer.Add(button_1, 0, wx.ALL|wx.CENTER, 5) 
     sizer.Add(button_2, 0, wx.ALL|wx.CENTER, 5) 
     self.SetSizer(sizer) 

    def self.output0(self,event): 
     if float(num) > 0: 
      num = num + str(0) 

    def self.output1(self,event): 
     num = num + str(1) 

    def self.output1(self,event): 
     num = num + str(1) 



if __name__ == '__main__': 
    app = wx.App(False) 
    frame = iCal() 
    frame.Show() 
    app.MainLoop() 

Numberic Keyboard

Antwort

0
import wx 

class iCal(wx.Frame): 

    def __init__(self): 
     wx.Frame.__init__(self, None, wx.ID_ANY, "Text") 
     panel = MainPanel(self) 

class MainPanel(wx.Panel): 

    def __init__(self, parent): 
     wx.Panel.__init__(self, parent=parent) 
     self.frame = parent 
     self.text_1 = wx.TextCtrl(self, value="0") 
     button_0 = wx.Button(self, label="0") 
     button_1 = wx.Button(self, label="1") 
     button_2 = wx.Button(self, label="2") 
     clear = wx.Button(self, label="Clear") 

     button_0.Bind(wx.EVT_LEFT_DOWN,self.output0) 
     button_1.Bind(wx.EVT_LEFT_DOWN,self.output1) 
     button_2.Bind(wx.EVT_LEFT_DOWN,self.output2) 
     clear.Bind(wx.EVT_LEFT_DOWN,self.clear) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     sizer.Add(self.text_1, 0, wx.ALL|wx.CENTER, 5) 
     sizer.Add(button_0, 0, wx.ALL|wx.CENTER, 5) 
     sizer.Add(button_1, 0, wx.ALL|wx.CENTER, 5) 
     sizer.Add(button_2, 0, wx.ALL|wx.CENTER, 5) 
     sizer.Add(clear, 0, wx.ALL|wx.CENTER, 5) 
     self.SetSizer(sizer) 

    def output0(self,event): 
     num = "0" 
     my_string = self.text_1.GetValue() + num 
     self.text_1.SetValue(my_string) 

    def output1(self,event): 
     num = "1" 
     my_string = self.text_1.GetValue() + num 
     self.text_1.SetValue(my_string) 

    def output2(self,event): 
     num = "2" 
     my_string = self.text_1.GetValue() + num 
     self.text_1.SetValue(my_string) 

    def clear(self,event): 
     my_string = self.text_1.GetValue() 
     my_string = my_string[:len(my_string)-1] 
     self.text_1.SetValue(my_string) 

if __name__ == '__main__': 
    app = wx.App(False) 
    frame = iCal() 
    frame.Show() 
    app.MainLoop() 
  1. hinzufügen Wenn Sie Code gehen zu schreiben, zumindest laufen sie zuerst sicherstellen, dass Sie aren‘ keinen Müll verschicken.
  2. Lesen Sie mehr über Saiten, bevor Sie die Manipulation Beitrag: Strings
+0

Vielen Dank, ich habe ich nicht erkennen, die falsche Datei geschrieben, die Dateien haben alle ähnlichen Namen leid. Können Sie mir bitte sagen, welches die beste Klasse ist, um die UI zu entwerfen, die ich nach den Codes veröffentlicht habe? Ich brauche Knöpfe wie diese und der 'Enter'-Knopf ist kein Quadrat. Ich habe gerade GirdSizer gefunden und frage mich, ob es bessere Klassen gibt. Vielen Dank. – Tyler

+0

Schau dir 'wx.FlexGridSizer' auch an –

+0

Danke, ich habe gerade ein Tutorial dazu gefunden. – Tyler