2016-07-13 1 views
0

Я хотел бы создать цифровую клавиатуру, и я не знаю, какую функцию использовать для отображения в реальном времени, когда я нажимал кнопку, скажем, что 1 отображается в тексте, когда кнопка 1 нажата, как дисплей калькулятора , И он может отображаться как 1234, когда в 1234 нажаты кнопки. И мне интересно, как я могу добавить забой, четкие функции, чтоЦифровая клавиатура

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

ответ

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. Если вы собираетесь размещать код, по крайней мере, запустить его первым, чтобы убедиться, что вы Арен» t проводка мусора.
  2. Читайте о манипулировании строк перед вами сообщением: Strings
+0

Спасибо большое, я не понимаю, что я отправил неверный файл, файлы все имеют одинаковые имена, сожалеет об этом. Можете ли вы рассказать мне, какой из лучших классов будет использоваться для разработки пользовательского интерфейса, который я разместил после кодов. Мне нужны такие кнопки, и кнопка «ввести» не является квадратом. Я только что нашел GirdSizer, и мне интересно, есть ли лучшие классы? Большое спасибо. – Tyler

+0

Отъезд 'wx.FlexGridSizer', а также –

+0

Спасибо, я только что нашел учебник по этому вопросу. – Tyler