1

私は単純な Python Tk 計算機を作成していますが、バグがあります。ボタンの 1 つを押してから数値を入力しないと計算機が機能しません。これを行うと、「数値を入力してください!」というエラーが表示されます。その後、入力数値が計算されますが、それを開いて数値を入力しただけでは機能しません

これが私のコードです:

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

1 に答える 1

4

コードは問題なく動作します。唯一の問題は、テキストの色が最初は黒であることです。そのオプションがfgオプションを白に設定し、次の変更では、構成されているのと同じテキストの色を保持するため、エラーを表示する前に「機能」するのはそのためです。

これを解決するには、Label ウィジェットを作成するときにfgオプションを次のように設定します。"white"

label3 = Label(root, bg="black", fg="white")
于 2013-05-05T01:33:31.743 に答える