前提・実現したいこと
いつもお世話になっております。
これはログイン画面で名前を入力した後,計算画面で在庫計算を行う,そしてBackボタンを押して一枚目に戻る,という流れです。二回目のログインがうまくいきません。
これを改善して正しくログイン,ログアウトが行えるようにしたいです。
↓ログイン画面(1枚目)
![!
↓計算画面(2枚目)
発生している問題・エラーメッセージ
Backボタンを押してログイン画面に戻った後,エントリーボックスに一回目と違う名前を入れても一回目に入れた名前と同じになります。
例)1回目に「田中」と入れて,Backボタンでログイン画面に戻ってログアウトした。
(このログアウトとは,「田中さんが退室しました」と出庫管理という別ファイルに履歴に書かれることを指します。)
その後「有吉」と入れてログインしても,ファイルには「有吉」と表記されずに「田中」と表記されていた。
# -*- coding: utf-8 -*- import tkinter from tkinter import* try: import tkinter as tk except: import tkinter as tk import datetime window = tkinter.Tk() window.geometry("1358x750") window.title("Screen Transition") f1 = open('マジック赤.txt') f2 = open('マジック青.txt') f3 = open('マジック黒.txt') data1 = f1.read() data2 = f2.read() data3 = f3.read() f1.close() f2.close() f3.close() canvas1 = tkinter.Canvas(bd=0, width=1366, height=768) titleLabel_j = tk.Label(canvas1, text=" ※@で画面を閉じる ", font=('Helvetica', '13'), fg='gray8') titleLabel_j.place(relx=0.85, rely=0.01) canvas1.place(x=0, y=0) # キャンバス label_a = tkinter.Label(canvas1, text="こんにちは。前室在庫管理システムです。", font=('BIZ UDゴシック', '25', 'bold'), bg="misty rose", fg='firebrick4') label_a.place(relx=0.29, rely=0.25) label_b = tkinter.Label(canvas1, text="下記のボックスにカーソルを置いて,別紙の社員QRコードをかざしてログインしてください。", font=('BIZ UDゴシック', '15'), fg= 'gray4') # テキスト label_b.place(relx=0.23, rely=0.35) label1 = tkinter.Label(canvas1, text="↓Name Here↓", font=('BIZ UDゴシック', '23'), fg='gray4') label1.place(relx=0.42, rely=0.42) button = tkinter.Button(canvas1, text=" Go ", font=('BIZ UDゴシック', '15'), command=lambda: transition_button1(canvas1), fg='gray4') button.place(relx=0.45, rely=0.53) button_kaisetsu = tkinter.Button(canvas1, text="使い方の詳細", font=('BIZ UDゴシック', '15'), command=lambda: kaisetsuPage(), fg='gray4') button_kaisetsu.place(relx=0.85, rely=0.05) entry1 = tkinter.Entry(canvas1, font=('Helvetica', '20')) entry1.place(relx=0.39, rely=0.47) def kaisetsuPage(): window = tkinter.Tk() window.geometry("500x600") def transition_button1(widget): widget.place_forget() canvas2 = tkinter.Canvas(bd=0, width=1366, height=768) canvas2.place(x=0, y=0) #Top Widget上に Scrollbar を生成して配置 bar = tk.Scrollbar(window, orient=tk.VERTICAL) bar.pack(side=tk.RIGHT, fill=tk.Y) bar.config(command=canvas2.yview) # Canvas Widget をTopWidget上に配置 canvas2.config(yscrollcommand=bar.set) canvas2.config(scrollregion=(0, 0, 500, 900)) canvas2.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) # Frame Widgetを 生成 frame = tk.Frame(canvas2) # Frame Widgetを Canvas Widget上に配置() canvas2.create_window((0, 0), window=frame, anchor=tk.NW, width=1366, height=768) # Frame Widget上に各種ラベルを表示 aaa = tk.Label(frame, text='マジック', font=('Helvetica', '15')) aaa.place(x=63, y=80) bbb = tk.Label(frame, text='bbb', font=('Helvetica', '15')) bbb.place(x=63, y=130) ccc = tk.Label(frame, text='ccc', font=('Helvetica', '15')) ccc.place(x=63, y=180) ddd = tk.Label(frame, text='ddd', font=('Helvetica', '15')) ddd.place(x=63, y=230) eee = tk.Label(frame, text='eee', font=('Helvetica', '15')) eee.place(x=63, y=280) fff = tk.Label(frame, text='fff', font=('Helvetica', '15')) fff.place(x=63, y=330) t0 = Text(width=30, height=40) t0.place(relx=0.8, rely=0.2) titleLabel5 = tk.Label(frame, text=data1, font=('Helvetica', '15')) titleLabel5.place(x=300, y=78) titleLabel6 = tk.Label(frame, text=data2, font=('Helvetica', '15')) titleLabel6.place(x=300, y=128) titleLabel7 = tk.Label(frame, text=data3, font=('Helvetica', '15')) titleLabel7.place(x=300, y=178) sptxt1 = StringVar() sp1 = Spinbox(frame, textvariable=sptxt1, from_=0, to=10, increment=1) sp1.place(x=485, y=80) sptxt2 = StringVar() sp2 = Spinbox(frame, textvariable=sptxt2, from_=0, to=10, increment=1) sp2.place(x=485, y=130) sptxt3 = StringVar() sp3 = Spinbox(frame, textvariable=sptxt3, from_=0, to=10, increment=1) sp3.place(x=485, y=180) date = datetime.datetime.now() print(date.year, "年", date.month, "月", date.day, "日", date.hour, "時", date.minute, "分", date.second, "秒") print(entry1.get(), "さんこんにちは!") file = "出庫履歴.txt" f4 = open(file, "a", encoding="utf_8") print(date.year, "年", date.month, "月", date.day, "日", date.hour, "時", date.minute, "分", date.second, "秒", file=f4) print(entry1.get(), "さんが入室しました。", file=f4) titleLabel_1 = tk.Label(canvas2, text=" 出庫したい備品の個数を指定して「出庫」ボタンを押してください。 ", font=('BIZ UDゴシック', '15'), bg="misty rose", fg='gray4') titleLabel_1.place(relx=0, rely=0) titleLabel_2 = tk.Label(canvas2, text=" 備品名 備品個数 必要個数 ", font=('BIZ UDゴシック', '25', 'bold'), bg="misty rose", fg='firebrick4') titleLabel_2.place(relx=0, rely=0.035) back_button = tkinter.Button(canvas2, text=" back ", command=lambda:transition_button2(canvas1), font=('BIZ UDゴシック', '13')) # 遷移ボタン back_button.place(relx=0.9, rely=0.01) kakutei_button = tk.Button(canvas2, text="確定",font=('BIZ UDゴシック', '13'), command=lambda:Kakutei(canvas2)) kakutei_button.place(relx=0.4, rely=0.85) def Kakutei(widget): f1 = open('マジック赤.txt') data1 = f1.read() f1.close() o = int(data1) p = int(sp1.get()) a = o - p titleLabel5.destroy() f1 = open('マジック赤.txt', 'w') print(a, file=f1) titleLabel10 = tk.Label(frame, text=a, font=('Helvetica', '15')) titleLabel10.place(x=300, y=78) f2 = open('マジック青.txt') data2 = f2.read() f2.close() q = int(data2) r = int(sp2.get()) b = q - r titleLabel6.destroy() f2 = open('マジック青.txt', 'w') print(b, file=f2) titleLabel8 = tk.Label(frame, text=b, font=('Helvetica', '15')) titleLabel8.place(x=300, y=128) f3 = open('マジック黒.txt') data3 = f3.read() f3.close() s = int(data3) t = int(sp3.get()) c = s - t titleLabel7.destroy() f3 = open('マジック黒.txt', 'w') print(c, file=f3) titleLabel9 = tk.Label(frame, text=c, font=('Helvetica', '15')) titleLabel9.place(x=300, y=178) print("残り在庫") print("マジック赤", a, "個", " (-", p, "個)") print("マジック青", b, "個", " (-", r, "個)") print("マジック黒", c, "個", " (-", t, "個)") file = "出庫履歴.txt" f4 = open(file, "a", encoding="utf_8") print("マジック赤", a, "個", " (-", p, "個)", file=f4) print("マジック青", b, "個", " (-", r, "個)", file=f4) print("マジック黒", c, "個", " (-", t, "個)", file=f4) t0.insert(tk.END, "マジック赤") t0.insert(tk.END, a) t0.insert(tk.END, "個 ") t0.insert(tk.END, " (-") t0.insert(tk.END, p) t0.insert(tk.END, "個)\n") t0.insert(tk.END, "マジック青") t0.insert(tk.END, b) t0.insert(tk.END, "個 ") t0.insert(tk.END, " (-") t0.insert(tk.END, r) t0.insert(tk.END, "個)\n") t0.insert(tk.END, "マジック黒") t0.insert(tk.END, c) t0.insert(tk.END, "個 ") t0.insert(tk.END, " (-") t0.insert(tk.END, t) t0.insert(tk.END, "個)\n") # back_button実行結果 def transition_button2(widget): canvas2.pack_forget() back_button.pack_forget() bar.pack_forget() frame.pack_forget() aaa.pack_forget() bbb.pack_forget() ccc.pack_forget() ddd.pack_forget() eee.pack_forget() fff.pack_forget() titleLabel_1.pack_forget() titleLabel_2.pack_forget() print("お疲れさまでした!") file = "出庫履歴.txt" f4 = open(file, "a", encoding="utf_8") print(entry1.get(), "さんが退室しました。", file=f4) # 画面1の復元 canvas1 = tkinter.Canvas(bd=0, width=1366, height=768) titleLabel_j = tk.Label(canvas1, text=" ※@で画面を閉じる", font=('Helvetica', '13'), fg='gray8') titleLabel_j.place(relx=0.85, rely=0.01) canvas1.place(x=0, y=0) # キャンバス label_a = tkinter.Label(canvas1, text="こんにちは。前室在庫管理システムです。", font=('BIZ UDゴシック', '25','bold'), bg="misty rose", fg='firebrick4') label_a.place(relx=0.29, rely=0.25) label_b = tkinter.Label(canvas1, text="下記のボックスにカーソルを置いて,別紙の社員QRコードをかざしてログインしてください。", font=('BIZ UDゴシック', '15'), fg='gray4') # テキスト label_b.place(relx=0.23, rely=0.35) label1 = tkinter.Label(canvas1, text="↓Name Here↓", font=('BIZ UDゴシック', '23'), fg='gray4') label1.place(relx=0.42, rely=0.42) button = tkinter.Button(canvas1, text="Go", font=('BIZ UDゴシック', '15'), command=lambda:transition_button1(canvas1), fg='gray4') button.place(relx=0.45, rely=0.53) entry2 = tkinter.Entry(canvas1, font=('Helvetica', '20')) entry2.place(relx=0.39, rely=0.47) button_kaisetsu = tkinter.Button(canvas1, text="使い方の詳細", font=('BIZ UDゴシック', '15'), command=lambda: kaisetsuPage(), fg='gray4') button_kaisetsu.place(relx=0.85, rely=0.05) if __name__ == "__main__": def process_b(): quit() def key(event): if event.char == "@": process_b() window.bind("<Key>", key) window.focus_set() window.mainloop()
試したこと
上記のentry1.get()の名前をかえましたがエラーがでました。
お手数ですが何卒よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー