728x90
반응형
하나의 글에서 여러문자를 반복해서 바꾸고 싶은데 한번씩 바꾸기 너무 귀찮아서 그냥 만들어버린 프로그램
초보자 답게 예쁘게 다듬는건 없음
결과를 먼저 보면
from tkinter import *
from tkinter import filedialog
from tkinter import messagebox
class Notepad:
def __init__(self,window):
# 창 생성
self.text = Text(window, height=30, width=80)
self.text.pack()
window.title("문자열 변경 노트패트")
# 메뉴를 붙인다
menu = Menu(window)
window.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="파일", menu=filemenu)
filemenu.add_command(label="열기", command=open)
filemenu.add_command(label="저장하기", command=self.save)
filemenu.add_command(label="종료", command=exit)
changemenu = Menu(menu, tearoff=0)
menu.add_cascade(label="바꾸기", menu=changemenu)
changemenu.add_command(label="문자변경프로그램", command=self.change_window)
def open(self):
# 파일 대화창을 askopenfile을 이용해서 만들고, 동시에 읽는다
file = filedialog.askopenfile(parent=self.window, mode='r')
if file != None:
lines = file.read()
# 1.0은 line.column이다.
# line은 1부터 시작하고 column은 0부터 시작함..
self.text.insert('1.0', lines)
file.close()
def save(self):
# 쓰고 저장하는 기능
file = filedialog.asksaveasfile(parent=self.window, mode='w')
if file != None:
lines = self.text.get('1.0', END + '-1c') # 마지막에서 1 char 뺀다, \n제거!
file.write(lines)
file.close()
def exit(self):
if messagebox.askokcancel("Quit", "종료하시겠습니까?"):
self.window.destroy()
def change_window(self):
window2 = Tk()
window2.geometry('250x250')
window2.title("문자열 변경")
label1 = Label(window2, text="변경 전", bg="light green")
label1.grid(row=0, column=1)
self.bf1 = Entry(window2, width=10)
self.bf1.grid(row=1, column=1)
self.bf2 = Entry(window2, width=10)
self.bf2.grid(row=2, column=1)
self.bf3 = Entry(window2, width=10)
self.bf3.grid(row=3, column=1)
self.bf4 = Entry(window2, width=10)
self.bf4.grid(row=4, column=1)
self.bf5 = Entry(window2, width=10)
self.bf5.grid(row=5, column=1)
self.bf6 = Entry(window2, width=10)
self.bf6.grid(row=6, column=1)
self.bf7 = Entry(window2, width=10)
self.bf7.grid(row=7, column=1)
self.bf8 = Entry(window2, width=10)
self.bf8.grid(row=8, column=1)
self.bf9 = Entry(window2, width=10)
self.bf9.grid(row=9, column=1)
self.bf10 = Entry(window2, width=10)
self.bf10.grid(row=10, column=1)
label2 = Label(window2, text="변경 후", bg="light blue")
label2.grid(row=0, column=3)
self.af1 = Entry(window2, width=10)
self.af1.grid(row=1, column=3)
self.af2 = Entry(window2, width=10)
self.af2.grid(row=2, column=3)
self.af3 = Entry(window2, width=10)
self.af3.grid(row=3, column=3)
self.af4 = Entry(window2, width=10)
self.af4.grid(row=4, column=3)
self.af5 = Entry(window2, width=10)
self.af5.grid(row=5, column=3)
self.af6 = Entry(window2, width=10)
self.af6.grid(row=6, column=3)
self.af7 = Entry(window2, width=10)
self.af7.grid(row=7, column=3)
self.af8 = Entry(window2, width=10)
self.af8.grid(row=8, column=3)
self.af9 = Entry(window2, width=10)
self.af9.grid(row=9, column=3)
self.af10 = Entry(window2, width=10)
self.af10.grid(row=10, column=3)
button = Button(window2, text="클 릭", bg="darkorchid", command=self.change_word)
button.grid(row=12, column=2)
def change_word(self):
find_str=[self.bf1.get(),self.bf2.get(),self.bf3.get(),self.bf4.get(),self.bf5.get(),self.bf6.get(),self.bf7.get(),self.bf8.get(),self.bf9.get(),self.bf10.get()]
replace_str=[self.af1.get(),self.af2.get(),self.af3.get(),self.af4.get(),self.af5.get(),self.af6.get(),self.af7.get(),self.af8.get(),self.af9.get(),self.af10.get()]
for i in range(len(find_str)):
if find_str[i] and replace_str[i]:
content = self.text.get(1.0, END)
new_content = content.replace(find_str[i], replace_str[i])
self.text.delete(1.0, END)
self.text.insert(END, new_content)
if __name__ == "__main__":
window = Tk()
notepad = Notepad(window)
window.mainloop()
728x90
반응형
'파이썬+VBA' 카테고리의 다른 글
엑셀 PERSONAL.XLSB 사용하기 (0) | 2023.12.26 |
---|---|
파이썬 tkinter 이용해서 여러개 문자 변경가능한 메모장 만들기2 (0) | 2023.12.22 |
파이썬 판다스 pandas ... 모두 출력하기 max (1) | 2023.11.24 |
관세청API 이용하기 (0) | 2023.10.31 |
공공데이터포탈(관세청API) 이용하기 (0) | 2023.10.27 |