2015-04-18 44 views
0

我一直在试图做一个简单的计算器,但我主要在两件事上挣扎。tkinter给出结果的单独窗口

  1. 决策执行中的Tkinter
  2. 算术公式显示的结果在单独的窗口

我一直试图利用顶层窗口小部件和showMessagebox但没有显示在新窗口结果的函数他们的作品!

代码:

from Tkinter import * 
import math 
import tkMessageBox 

class Calculator(): 

    def __init__(self,master): 

      self.master = master 
      self.master.configure(background='sky blue') 
      self.master.geometry('650x420+350+225') 

      self.master.title('Calculator') 

      self.ini_velocity = DoubleVar() 

      # here we start creating buttons and entry boxes 
      self.m_label = Label(text='Calculator',fg = 'Navy', font=("Helvetica", 20,"bold italic"), bg='sky blue') 
      self.m_label.pack() 

      self.button1 = Button(self.master,text='Final velocity',fg='white',bg='dark green',bd =3, width=12, command= self.show_m) 
      self.button1.place(x=52,y=155) 

      self.label1=Label(self.master,text='''1. v = u + a*t 

    Initial Velocity 

    Acceleration 

      Time ''', fg= 'Navy', font='Helvetica 10 bold',bg='sky blue') 
      self.label1.place(x=0,y=30) 

      self.e1= Entry(self.master, textvariable = self.ini_velocity, width=4,bd=2) 
      self.e1.place(x=120, y=62) 

      self.e2= Entry(self.master, width=4, bd=2) 
      self.e2.place(x=120, y=92) 

      self.e3=Entry(self.master, width=4,bd=2) 
      self.e3.place(x=120, y=122) 

    def my_calculation(self): # this function is to operate the calculation 
      root2 = Toplevel(self.master) 
      myGUI = result_window(root2) 

    def my_quit(self): 
      self.master.destroy() 

    def myresault(self): 
      self.a = self.ini_velocity.get() 


class result_window(): 
    def __init__(self,master): 
      self.master = master 
      self.master.configure(background='sky blue') 
      self.master.geometry('250x175+150+125') 
      self.master.title('resault') 

      print (Calculator.self.e1.get()) 

    def F_velocity(self): 
      ini_v = self.ini_velocity.get() 
      print (ini_v) 


      # end of button commands 
def main(): 

    root = Tk() 
    myGUIcalculator = Calculator(root) 
    root.mainloop() 

if __name__=='__main__': 
    main() 
+0

“他们都不工作”太含糊。 –

回答

0

对于单独的窗口,使用tkMessageBox(如你认为)。使用tkMessageBox.showinfo(title, message)。例如:

from Tkinter import * 
import tkMessageBox 

numbersandoperatorslist = "1 2 3 4 5 6 7 8 9 0 - + =/*".split(" ") 

def operation(content): 
    contentlist = [] 
    for char in range(len(content)): 
     contentlist.append(char) # This might be useful later 
     if char not in numbersandoperatorslist: 
      tkMessageBox.showerror("Error", "Your operation has an undefined character.") 
      return 
    result = eval(content) 
    tkMessageBox.showinfo("Result", str(result)) 

其中content是您的操作。如果您想要添加/删除可接受的字符,只需编辑numbersandoperatorslist,并且不要忘记在字符之间添加空格。

+0

感谢您回复队友,这个建议很有效,但现在我又遇到了另一个问题,那就是如何评估输入输入并只接受数字,并且显示用户输入的消息并不值钱。我正在尝试使用validatecommand,但它不起作用。不幸的是,tkinter中的东西是不同的。 –

+0

@Janomannan:很简单。替换新响应的操作功能。 – DCPY

+0

你能写一个简短的代码吗? –