이번에 수정한 부분은 위와 같다.
chart 클래스가 버튼을 생성하고, 그 버튼의 값을 entry에 보여줘야 하므로
chart클래스가 entry타입을 받게끔 하였다.
그리고 버튼을 클릭하면 값이 보이게 하는 메서드를 밖으로 빼서 만들었다.
문제는 문장을 보여줘야하므로 바뀌는 값이 계속 저장되게끔 해야하는데 이 구성을 어떻게 매끄럽게 할지가 가장 큰 고민이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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(); <br> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 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" ); |
'파이썬 > 도전) 앱만들기' 카테고리의 다른 글
Matplot calculatior 다시 시작(클래스 분류화) (0) | 2018.07.26 |
---|---|
matplotlib calculator 클래스화 (0) | 2018.07.11 |
matplotlib calculator 2회차 (0) | 2018.07.10 |
matplotlib 계산기) 1차 대략적 구성 (0) | 2018.07.07 |
계산기 모듈화 하기 (0) | 2018.07.04 |