이번에 수정한 부분은 위와 같다.

chart 클래스가 버튼을 생성하고, 그 버튼의 값을 entry에 보여줘야 하므로

chart클래스가 entry타입을 받게끔 하였다.

그리고 버튼을 클릭하면 값이 보이게 하는 메서드를 밖으로 빼서 만들었다.

문제는 문장을 보여줘야하므로 바뀌는 값이 계속 저장되게끔 해야하는데 이 구성을 어떻게 매끄럽게 할지가 가장 큰 고민이다.


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

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

from tkinter import *;
class chart:
    def __init__(self, window, row, column, output_entry):
        self.window = window;
        self.pad = Frame(window);
        self.row = row;
        self.column = column;
        self.outentry= output_entry;
        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);
        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;
            record_lst = [];
            for i in range(len(category)):
                for key,value in category[i].items():
                    def inner(k = key, v = value, index =i):
                        print(i)
                        del record_lst[i:i+1];
                        record_lst.insert(i,{k,v});
                        self.button_action(k,record_lst);
                    Button(button_pad,text = i, width = 10, command = inner).grid(row = r, column=c);
                    c += 1;
                if c > 2:
                    c = 0;
                    r += 1;

    def button_action(self,key,lst):
        #str = "plt.plot([10, 20, 30, 40], [1, 4, 9, 16], c= '%s', ls='%s', marker='%s')" %(lst[0][key],lst[1][key], lst[2][key]);
        print(lst);
        self.outentry.delete(0, END);
        self.outentry.insert(END, "Test");


+ Recent posts