更新しない日付の通知を計算する小さなウィジェットを作成しようとしています。基本的には、有効期限から非更新日の通知を差し引き、ボタンをクリックして出力を生成します。スコープエラー - (NameError:name 'date'が定義されていません)
私は次のエラーを取得する:次のように
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Abraham Valencia\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:\Users\Abraham Valencia\Desktop\Python Learning Folder\test1.py", line 50, in result
result = datetime.date(date - days)
NameError: name 'date' is not defined
私のコードは次のとおりです。
import tkinter as tk
from datetime import datetime, timedelta
class Application(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.master = master
master.title("Trade Finance")
master.minsize(width=250, height=200)
master.maxsize(width=250, height=200)
self.date = None
#Input of expiry date
label = tk.LabelFrame(master, text = "Input", bd = 2, font='none 8 italic')
label.pack()
tk.Label(label, text="Expiry Date (YYYY-MM-DD)",font = 'none 10').pack()
self.userinput1 = tk.StringVar()
tk.Entry(label,textvariable = self.userinput1).pack()
#Input of non-renewal days
tk.Label(label, text="Non-Renewal Days",font = 'none 10').pack()
self.userinput2 = tk.StringVar()
tk.Entry(label, textvariable = self.userinput2).pack()
#output results
label_1 = tk.LabelFrame(master, text = "Output", bd = 2, font='none 8 italic')
label_1.pack()
tk.Label(label_1,text= 'Review Date',font= 'none 10').pack()
button = tk.Button(label_1, text="Calculate", fg ='white', bg = 'black',font= 'none 10 bold',command=self.result).pack()
tk.Entry(label_1, textvariable = self.result).pack()
def expiry(self):
while True:
date = self.userinput1.get()
try:
return datetime.strptime(date, '%Y-%m-%d')
except ValueError:
print('Please follow the date format')
def notice_days(self):
ndays = self.userinput2.get()
return timedelta(days=ndays)
def result(self):
result = datetime.date(date - days)
return result
if __name__=='__main__':
root = tk.Tk()
app = Application(root)
app.mainloop()
私はこのタイプのエラーが生じています、またはI私はその何かが欠けている理由上の任意のアイデア適切に宣言されていません。フィードバックいただきありがとうございます。問題の
ありがとうございました@omri_saadon。私は理にかなってあなたのフィードバックに従ってきました。コードはエラーなしで実行されますが、ボタンを押すと出力ラベルに何も表示されません。なぜなのかご存知ですか? –
@AbrahamValencia、それは 'result'メソッドで結果を返す必要があるからです。 'result'メソッドに別の行を追加します:' return result' –
結果は何も表示されません。私はあなたのフィードバックを上記のコードに含めました。 –