#main.py
import ui_base.fileRW as f
import ui_base.main_ui as ui
import tkinter as tk
def main():
root = tk.Tk()
file = f.FileRW('../ui')
app = ui.AppWindow(root, '650x500+100+100', file)
app.mainloop()
main()
#main_ui.py
import tkinter as tk
from tkinter import messagebox
class AppWindow(tk.Frame):#프레임 하나 만듬.
def __init__(self, root=None, geo=None, file=None):
super().__init__(root)#부모 생성자에 기본 윈도우 전달
self.root = root #기본 윈도우를 멤버변수로 저장
self.root.geometry(geo)#윈도우의 크기 및 위치 설정
self.root.resizable(True, True)#윈도우의 가로, 세로 크기 재조정 가능으로 설정
self.pack()#현재 이객체(프레임)을 윈도우에 부착
self.file = file
self.flist = None #파일 목록 담을 리스트
self.raVal = tk.IntVar()#라디오버튼 선택한 것의 value
self.subfr = None#라디오버튼이 부착될 판으로 사용할 프레임
self.create_widgets()
def create_widgets(self):#원하는 구성요소 부착
self.title = tk.Label(self, text='파일읽기<파일목록>')
self.title.pack()
self.subfr = tk.Frame(self) # 하위 프레임 생성
self.subfr.pack()
self.mkFList()
self.readBtn = tk.Button(self, text='read', command=self.readFile)
self.readBtn.pack()
self.content = tk.Label(self, text='')
self.content.pack()
self.title = tk.Label(self, text='파일쓰기')
self.title.pack()
self.aa = tk.Label(self, text='생성할 파일명')
self.aa.pack()
self.ent1 = tk.Entry(self, width=50)
self.ent1.pack()
self.bb = tk.Label(self, text='파일 내용을 입력하시오')
self.bb.pack()
self.ent2 = tk.Entry(self, width=50)
self.ent2.pack()
self.writeBtn = tk.Button(self, text='write', command=self.writeFile)
self.writeBtn.pack()
def mkFList(self):
ff = self.subfr.grid_slaves()#위젯의 부모에서 grid로 배치된 위젯만 검색
for i in ff:
i.destroy()#destroy(): 위젯 삭제
j=0
self.flist = self.file.listDir()
for idx, i in enumerate(self.flist):
r = tk.Radiobutton(self.subfr, text=i, variable=self.raVal, value=idx)
if idx!=1 and idx%3==1:
j+=1
r.grid(row=j, column=(idx-1)%3)
def readFile(self):
msg = self.file.read(self.flist[self.raVal.get()])
self.content.config(text=msg)
def writeFile(self):
fname = self.ent1.get()#파일명 읽음
if fname=='' or fname==None:
tk.messagebox.showinfo(title='오류', message='파일명 누락')
return
content = self.ent2.get()
self.file.write(fname, content)
self.ent1.delete(0, tk.END)
self.ent2.delete(0, tk.END)
self.mkFList()
#fileRW.py
import os
class FileRW:
def __init__(self, path):
self.path = path
def mkDir(self):
if not os.path.isdir(self.path):
os.mkdir(self.path)
def listDir(self):
return os.listdir(self.path)
def read(self, fname):
f = open(self.path+'/'+fname, 'r', encoding='utf-8')
content = f.read()
f.close()
print(content)
return content
def write(self, fname, content):
f = open(self.path+'/'+fname, 'w', encoding='utf-8')
f.write(content)
f.close()
'파이썬' 카테고리의 다른 글
Tkinter UI에 matplotlib그래프그리기 (0) | 2021.01.03 |
---|---|
중계서버-멀티채팅(GUI버전) (2) | 2020.12.17 |
파이썬 DB기본예제(MySql) (0) | 2020.12.17 |
소켓통신(중계서버-멀티 클라이언트 채팅) (0) | 2020.12.15 |
소켓통신(서버-클라이언트간 1:1 채팅) (0) | 2020.12.14 |