2013-05-04 67 views
1

我正在制作一个简单的Python Tk计算器,但有一个错误:计算器将无法正常工作,除非我先按下其中一个按钮,然后再放入数字时,它会显示一条错误“输入数字值!”之后,它是那么它将计算输入电话号码,但如果我只是打开它,输入数字,它不会工作Tkinter计算器错误

这里是我的代码:

from Tkinter import * 
import math 

def calculate(): 
    try: 
     num1 = float(enter1.get()) 
     num2 = float(enter2.get()) 
     result = num1 * num2 
     label3.config(text=str(result)) 
    except ValueError: 
     label3.config(text='Enter numeric values!', fg="white") 

def calculate2(): 
    try: 
     num1 = float(enter1.get()) 
     num2 = float(enter2.get()) 
     result = num1/num2 
     label3.config(text=str(result)) 
    except ValueError: 
     label3.config(text='Enter numeric values!', fg="white") 

def calculate3(): 
    try: 
     num1 = float(enter1.get()) 
     num2 = float(enter2.get()) 
     result = num1 + num2 
     label3.config(text=str(result)) 
    except ValueError: 
     label3.config(text='Enter numeric values!',fg="white") 

def calculate4(): 
    try: 
     num1 = float(enter1.get()) 
     num2 = float(enter2.get()) 
     result = num1 - num2 
     label3.config(text=str(result)) 
    except ValueError: 
     label3.config(text='Enter numeric values!',fg="white") 

def calculate5(): 
    try: 
     num1 = float(enter1.get()) 
     result = num1**2 
     label3.config(text=str(result)) 
    except ValueError: 
     label3.config(text='Enter numeric values!',fg="white") 

def calculate6(): 
    try: 
     num1 = float(enter1.get()) 
     result = math.sqrt(num1) 
     label3.config(text=str(result)) 
    except ValueError: 
     label3.config(text='Enter numeric values!',fg="white") 


root = Tk() 
root.configure(background='black') 
root.wm_title("Calc") 

label1 = Label(root, text='First Number:',bg="black", fg="white") 
label1.grid(row=0, column=0,columnspan=2) 
enter1 = Entry(root, bg='white') 
enter1.grid(row=1, column=0,columnspan=2) 

label2 = Label(root, text='Second Number:',bg="black", fg="white") 
label2.grid(row=2, column=0,columnspan=2) 
enter2 = Entry(root, bg='white') 
enter2.grid(row=3, column=0, columnspan=2) 

btn1 = Button(root, text='-Multiply-', command=calculate,          bg=" black",activebackground="green", fg="white") 
btn1.grid(row=4, column=0) 
btn2 = Button(root, text='-Divide-', command=calculate2, bg="black",activebackground="orange", fg="white") 
btn2.grid(row=5, column=0) 
btn3 = Button(root, text='-Add-', command=calculate3, bg="black",activebackground="purple", fg="white") 
btn3.grid(row=5, column=1) 
btn4 = Button(root, text='-Subtract-', command=calculate4, bg="black",activebackground="red", fg="white") 
btn4.grid(row=4, column=1) 
btn5 = Button(root, text='Square (Only First #)', command=calculate5, bg="black",activebackground="cyan", fg="white") 
btn5.grid(row=6, column=0, columnspan=2) 
btn6 = Button(root, text='Square Root (only First #)', command=calculate6, bg="black",activebackground="yellow", fg="white") 
btn6.grid(row=7, column=0, columnspan=2,) 
label3 = Label(root, bg="black") 
label3.grid(row=8, column=0, columnspan=2) 

enter1.focus() 
enter1.bind('<Return>', func=lambda e:enter2.focus_set()) 
root.mainloop() 

回答

4

您的代码工作没有任何问题,唯一的问题在于文字颜色最初是黑色的。这就是为什么它在显示错误之前“起作用”,因为该选项将fg选项设置为白色,并且在接下来的更改中它保持已配置的相同文本颜色。

为了解决这个问题,在创建标签插件的fg选项正好被设置为"white"

label3 = Label(root, bg="black", fg="white") 
+0

比你!我想我只是没有抓住这一点 – Serial 2013-05-05 03:33:18