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
반응형

+ Recent posts