기존에 진행중이던 것들이 어느정도 끝났기에 얼른 이것을 마무리 하려한다.

지난번에는 main 클래스에 모든것을 다 넣고서 돌아가게끔 하는게 목적이었고 이번엔 지난번 것을 바탕으로

나름 클래스화 하여 구성해보려 한다.


메인 화면은 크게

1. 내가 선택한 파라미터 명령어가 나오게 하는 것

2. 차트 종류를 선택하면 그에 해당하는 파라미터가 등장

3. 파라미터 버튼 클릭시 1번 화면 업데이트

4. 생성 버튼 클릭시 matplot 화면을 보여줌

5. 파라미터 클릭시 실시간 변화...


이렇게 5개의 기능이 목표이다.



from tkinter import *;
from chart import *;
from display import *;

window = Tk();
window.title("Maplotlib Calc");
window.geometry("400x300");
# 결과들을 보여주는 아웃풋
output = display(window, 0, 0);
output.make_Entry(0,0,70,"light green")
# class를 생성할시엔 무조건 frame row, col을 받게끔 해야함
chart = chart(window,2,0); # 버튼을 만들기 위함
chart.make_button();
window.mainloop();

기본적으로 tkinter를 이용해 gui를 구성, 현재 위 메인단에서 클래스는 하나는 버튼용, 하나는 out풋 용으로 만들었다


from tkinter import *;
class display():
    def __init__(self, window, row,col):
        self.window = window;
        self.row = row;
        self.col = col;
        self.tpfr = Frame(window);
        self.tpfr.grid(row = self.row, column = self.col, sticky = N);

    def make_Entry(self, row, col, width, color):
        display = Entry(self.tpfr, width = width, bg=color)
        display.grid(row = row, column = col);

단순히 엔트리(녹색 입력창?) 을 만들기 위한 클래스, 모든 클래스는 frame 생성을 위해 row, col을 받게끔 설정


from tkinter import *;
class chart:
    def __init__(self, window, row, column):
        self.window = window;
        self.pad = Frame(window);
        self.row = row;
        self.column = column;
        self.pad.grid(row = self.row, column = self.column,sticky = W);

    def make_button(self):
        char_lst = ['LINE', 'SCATTER']
        r , c = 0,0
        for k, v in enumerate(char_lst):
            def inner(index = k):
                self.show(index)
            Button(self.pad, text = v, width =10, command = inner).grid(row = r, column = c)
            c +=1;

    def show(self, index):
        button_pad = Frame(self.window)
        button_pad.grid(row =3, column =0, sticky = N);
        print("show show", index)
        if index == 0:
            cr = {'black' : 'k', 'green':'g', 'red':'r'};
            ls = {'solid' : '-', 'dashed' : '--', 'dashed dot' : '-.'};
            marker = {'point' : '.', 'circle' : 'o', 'triangle_up' : '^'};
            category = [cr, ls, marker];
            r = 0;
            c = 0;
            for i in range(len(category)):
                for key,value in category[i].items():
                    Button(button_pad,text = key, width = 10).grid(row = r, column=c);
                    c += 1;
                if c > 2:
                    c = 0;
                    r += 1;

문제의 버튼 클래스, 처음에 차트 종류를 보여주고, 클릭하면 파라미터가 보여질수있게끔 코드를 짜다보디 이런모양이 되었다..

+ Recent posts