tkinter中的单独窗口给出结果

时间:2015-04-18 01:28:19

标签: python-2.7 tkinter

我一直在尝试制作一个简单的计算器,但我主要是在做两件事。

  1. 创建一个在tkinter中执行算术方程的函数
  2. 在单独的窗口中显示结果
  3. 我试图通过使用顶级窗口小部件和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()
    

1 个答案:

答案 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,并且不要忘记在字符之间添加空格。