2016-03-03 25 views
0

我用eclipse製作了一個計算器(我們自己輸入數字,不使用按鈕)。我是這樣設計的。我不知道什麼是錯的,沒有錯誤信息,沒有運行,沒有調試....(wxpython)

enter image description here

圖片說明:

  1. 使用鍵盤輸入的數字
  2. 選擇運算過程
  3. 結果出來

,但它沒」 t運行(關閉窗口),沒有調試.....沒有錯誤信息。

import wx 

class MainWindow(wx.Frame): 
    def __init__(self, parent, title): 
     wx.Frame.__init__(self, parent, title=title, size=(400,200)) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     self.SetSizer(sizer) 

     calcus = wx.BoxSizer(wx.HORIZONTAL) 
     self.SetSizer(calcus) 

     self.text1 = wx.TextCtrl(self, style=wx.TE_MULTILINE) 
     self.text2 = wx.TextCtrl(self, style=wx.TE_MULTILINE) 


     button5 = wx.BoxSizer(wx.VERTICAL) 
     self.SetSizer(button5) 
     eq = wx.Button(self, label=u"=") 
     button5.Add(eq, 1, wx.GROW) 

     self.text3 = wx.TextCtrl(self, style=wx.TE_MULTILINE) 


     def Click1(event): 
      value1 = self.text1.GetValue() 
      value2 = self.text2.GetValue() 
      value3 = value1 + value2 
      self.text3.SetValue(self,value3) 

     def Click2(event): 
      value1 = self.text1.GetValue() 
      value2 = self.text2.GetValue() 
      value3 = value1 - value2 
      self.text3.SetValue(self,value3) 

     def Click3(event): 
      value1 = self.text1.GetValue() 
      value2 = self.text2.GetValue() 
      value3 = value1 * value2 
      self.text3.SetValue(self,value3) 

     def Click4(event): 
      value1 = self.text1.GetValue() 
      value2 = self.text2.GetValue() 
      value3 = value1/value2 
      self.text3.SetValue(self,value3) 

      buttons = wx.BoxSizer(wx.VERTICAL) 
      self.SetSizer(buttons) 
      plu = wx.Button(self, label=u"+") 
      miu = wx.Button(self, label=u"-") 
      mut = wx.Button(self, label=u"x") 
      did = wx.Button(self, label=u"%") 

      plu.Bind(wx.EVT_BUTTON, Click1) 
      miu.Bind(wx.EVT_BUTTON, Click2) 
      mut.Bind(wx.EVT_BUTTON, Click3) 
      did.Bind(wx.EVT_BUTTON, Click4) 

      buttons.Add(plu, 1, wx.GROW) 
      buttons.Add(miu, 1, wx.GROW) 
      buttons.Add(mut, 1, wx.GROW) 
      buttons.Add(did, 1, wx.GROW) 

      calcus.Add(self.text1, 4, wx.GROW) 
      calcus.Add(buttons, 1, wx.GROW) 
      calcus.Add(self.text2, 4, wx.GROW) 
      calcus.Add(button5, 1, wx.GROW) 
      calcus.Add(self.text3, 4, wx.GROW) 

      self.Center() 
      self.Show() 

app = wx.App(False) 
frame = MainWindow(None, "Calculator") 
app.MainLoop() 

回答

0

您的代碼存在各種問題。

窗口大小未設置得足夠寬以顯示所有控件。

許多widget創建代碼都是在click4事件處理程序中縮進的。

僅僅需要使用一次。

事件處理程序縮進是錯誤的。

事件處理程序應該有自己作爲第一個參數。

文本控件getvalue方法返回一個字符串,需要將其轉換爲數字,然後在計算後返回字符串。

所有的事件處理程序只是在進行乘法運算。

下面的代碼工作,但可以通過刪除重複的代碼更提高ECT

import wx 


class MainWindow(wx.Frame): 

    def __init__(self, parent, title): 
     wx.Frame.__init__(self, parent, title=title, size=(600, 200)) 

#   sizer = wx.BoxSizer(wx.VERTICAL) 
#   self.SetSizer(sizer) 

     calcus = wx.BoxSizer(wx.HORIZONTAL) 
     self.SetSizer(calcus) 

     self.text1 = wx.TextCtrl(self, style=wx.TE_MULTILINE) 
     self.text2 = wx.TextCtrl(self, style=wx.TE_MULTILINE) 

     button5 = wx.BoxSizer(wx.VERTICAL) 
#   self.SetSizer(button5) 
     eq = wx.Button(self, label=u"=") 
     button5.Add(eq, 1, wx.GROW) 

     self.text3 = wx.TextCtrl(self, style=wx.TE_MULTILINE) 

     buttons = wx.BoxSizer(wx.VERTICAL) 
#   self.SetSizer(buttons) 
     plu = wx.Button(self, label=u"+") 
     miu = wx.Button(self, label=u"-") 
     mut = wx.Button(self, label=u"x") 
     did = wx.Button(self, label=u"%") 

     plu.Bind(wx.EVT_BUTTON, self.click1) 
     miu.Bind(wx.EVT_BUTTON, self.click2) 
     mut.Bind(wx.EVT_BUTTON, self.click3) 
     did.Bind(wx.EVT_BUTTON, self.click4) 

     buttons.Add(plu, 1, wx.GROW) 
     buttons.Add(miu, 1, wx.GROW) 
     buttons.Add(mut, 1, wx.GROW) 
     buttons.Add(did, 1, wx.GROW) 

     calcus.Add(self.text1, 4, wx.GROW) 
     calcus.Add(buttons, 1, wx.GROW) 
     calcus.Add(self.text2, 4, wx.GROW) 
     calcus.Add(button5, 1, wx.GROW) 
     calcus.Add(self.text3, 4, wx.GROW) 

     self.Center() 
     self.Show() 

    def click1(self, event): 
     value1 = self.text1.GetValue() 
     value2 = self.text2.GetValue() 
     value3 = float(value1) + float(value2) 
     self.text3.SetValue('{}'.format(value3)) 

    def click2(self, event): 
     value1 = self.text1.GetValue() 
     value2 = self.text2.GetValue() 
     value3 = float(value1) - float(value2) 
     self.text3.SetValue('{}'.format(value3)) 

    def click3(self, event): 
     value1 = self.text1.GetValue() 
     value2 = self.text2.GetValue() 
     value3 = float(value1) * float(value2) 
     self.text3.SetValue('{}'.format(value3)) 

    def click4(self, event): 
     value1 = self.text1.GetValue() 
     value2 = self.text2.GetValue() 
     value3 = float(value1)/float(value2) 
     self.text3.SetValue('{}'.format(value3)) 


app = wx.App(False) 
frame = MainWindow(None, "Calculator") 
app.MainLoop() 
相關問題