출처 : 반크_독도2023
참고풀이]
import pickle
from tkinter import *
from tkinter import messagebox
phone_book={}
pb=[]
cnt=0
name=""
phone=""
#파일저장
def Save():
outFile=open("phone_book.dat","wb")
pickle.dump(phone_book, outFile)
outFile.close()
messagebox.showinfo("SaveFile","이름과 전화번호가 저장되었습니다.")
#Clean
def Clean():
ent1.delete(0,END)
ent2.delete(0,END)
ent1.focus()
#선택자료 출력
def Print():
global pb, cnt
Clean()
ent1.insert(0, pb[cnt])
ent2.insert(0, phone_book[pb[cnt]])
#추가
def Add():
global phone_book
phone_book[ent1.get()]=ent2.get()
messagebox.showinfo("AddSave",phone_book)
Save()
Clean()
#처음
def First():
global pb, cnt
cnt=0
pb=list(phone_book) #딕셔너리를 리스트로 변환
Print()
#다음
def Next():
global pb, cnt
cnt+=1
pb=list(phone_book) #딕셔너리를 리스트로 변환
if cnt == len(pb):
messagebox.showinfo("ErrorMessage","더 이상 자료가 없습니다.")
cnt=len(pb)-1
else:
Print()
#이전
def Before():
global pb, cnt
cnt-=1
pb=list(phone_book) #딕셔너리를 리스트로 변환
if cnt < 0:
messagebox.showinfo("ErrorMessage","더 이상 자료가 없습니다.")
cnt=0
else:
Print()
#마지막
def Last():
global pb, cnt
pb=list(phone_book) #딕셔너리를 리스트로 변환
cnt=len(pb)-1
Print()
#파일 읽기
def FileLoad():
global phone_book
inFile=open("phone_book.dat","rb")
phone_book=pickle.load(inFile)
#messagebox.showinfo("LoadFile",phone_book)
inFile.close()
messagebox.showinfo("LoadFile","이름과 전화번호를 읽어왔습니다.")
#끝내기, 추가함.
def WinEnd():
win.destroy()
#main 부분
win=Tk()
#작업창의 크기와 위치를 정한다.
win.geometry("490x120+600+400")
#작업창의 크기조절을 할 수 없도록 한다.
win.resizable(0,0)
#Label, Entry, Button등을 창에 배치한다.
lbl1=Label(win, text="이 름", width=10, font=("굴림",15))
ent1=Entry(win, width=28, font=("굴림",15)) #이름
lbl2=Label(win, text="전화번호", width=10, font=("굴림",15))
ent2=Entry(win, width=28, font=("굴림",15)) #전화번호
lbl1.grid(row=0, column=0, pady=10, columnspan=3)
ent1.grid(row=0, column=3, padx=10,columnspan=5)
lbl2.grid(row=1, column=0, columnspan=3)
ent2.grid(row=1, column=3, padx=10,columnspan=5)
lbl3=Label(win, text=" ", width=1)
btn1=Button(win, text="추가저장", width=7, font=("굴림",11,"bold"), command=Add)
btn2=Button(win, text="처음", width=6, font=("굴림",11,"bold"), command=First)
btn3=Button(win, text="다음", width=6, font=("굴림",11,"bold"), command=Next)
btn4=Button(win, text="이전", width=6, font=("굴림",11,"bold"), command=Before)
btn5=Button(win, text="마지막", width=6, font=("굴림",11,"bold"), command=Last)
btn6=Button(win, text="파일읽기", width=7, font=("굴림",11,"bold"), command=FileLoad)
btn7=Button(win, text="닫기", width=6, font=("굴림",11,"bold"), command=WinEnd)
lbl3.grid(row=2, column=0)
btn1.grid(row=2, column=1, pady=10)
btn2.grid(row=2, column=2, pady=5)
btn3.grid(row=2, column=3, pady=5)
btn4.grid(row=2, column=4, pady=5)
btn5.grid(row=2, column=5, pady=5)
btn6.grid(row=2, column=6, pady=5)
btn7.grid(row=2, column=7, pady=5)
win.mainloop()
참고풀이 결과]
시작화면)
대한민국의 아름다운 영토, 독도의 여름
'프로그램 > Python 1000제' 카테고리의 다른 글
Python 327제] 두근두근 파이썬(개정판) CHAPTER 13 연습문제 4 p397 (0) | 2024.10.28 |
---|---|
Python 326제] 두근두근 파이썬(개정판) CHAPTER 12 도전문제 1 p377 (0) | 2024.10.21 |
Python 324제] 두근두근 파이썬(개정판) CHAPTER 11 연습문제 6 p361 (0) | 2024.10.14 |
Python 323제] 두근두근 파이썬(개정판) CHAPTER 11 연습문제 5 p360 (0) | 2024.10.14 |
Python 322제] 두근두근 파이썬(개정판) CHAPTER 11 연습문제 4 p360 (0) | 2024.10.14 |
댓글