我一直在尝试制作一个简单的计算器,但我主要是在做两件事。
我试图通过使用顶级窗口小部件和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
,并且不要忘记在字符之间添加空格。