2016-07-13 14 views
0

数値キーボードを設計したいと思います。ボタンをクリックしたときにリアルタイム表示に使用する機能がわかりません。電卓表示のようにボタン1をクリックすると、1がtextctrlに表示されます。 1234ボタンをクリックすると1234のように表示されます。そして、私はあなたが、少なくともあなたは「ARENことを確認するために最初にそれを実行し、コードを投稿しようとしている場合、私はその数値キーボード

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

私は私が間違ってファイルを投稿実現していない、ファイルのすべてが、そのことについて申し訳ありません似た名前を持って、ありがとうございました。コードの後に​​投稿したUIをデザインするために使用するのに最適なクラスを教えてください。私はそのようなボタンが必要で、「入力」ボタンは正方形ではありません。私はGirdSizerを見つけました。より良いクラスがあるのだろうか?どうもありがとうございました。 – Tyler

+0

'wx.FlexGridSizer'もチェックしてください –

+0

ありがとうございました、私はちょうどそれについてのチュートリアルを見つけました。 – Tyler

関連する問題