2014-04-07 2 views
2

이것은 매우 간단한 문제입니다. 하나의 열에 약 30 개 정도의 항목 위젯이있는 GUI를 만들고 있습니다. 각 상자를 하나씩 만드는 대신 루프를 사용하여 위젯을 생성하는 것이 더 좋은 생각처럼 보입니다. 그러나 항목 위젯에서 .get() 값을 얻는 것이 매우 어렵고이를 수레로 변환합니다. 이것은 내가 지금까지 가지고있는 것입니다 ... 어떤 도움도 크게 감사 할 것입니다.tkinter의 루프에 대한 엔트리 위젯에서 값을 저장하는 방법은 무엇입니까?

class Application(Frame): 

def __init__(root,master): 
    Frame.__init__(root,master) 
    root.grid() 
    root.create_widgets() 



def calcCR(root):   
    d1 = root.enter.get() 
    d1 = float(d1) 
    #root.answer.delete(0.0,END) 
    a = 'The C/R Alpha is! %lf \n' % (d1) 
    root.answer.insert(0.0, a) 


def create_widgets(root): 
    ### Generate Element List ### 
    for i in range(len(elem)): 
     Label(root, text=elem[i]).grid(row=i+1, column=0) 

    ### Generate entry boxes for element wt% ### 
    for i in range(len(elem)):    
     enter = Entry(root, width = 8) 
     enter.grid(row = i+1,column=1) 
     enter.insert(0,'0.00') 

    root.button = Button(root, text = 'Calculate C/R', command = root.calcCR) 
    root.button.grid(row=11, column=2, sticky = W, padx = 10) 

    root.answer = Text(root, width = 50, height = 12.5, wrap = WORD) 
    root.answer.grid(row=1, column=2, rowspan = 10, sticky = W, padx = 10)  


root = Tk() 
root.title('C/R Calculator') 
app = Application(root) 
root.mainloop() 

답변

3

Entry 인스턴스를 목록에 넣습니다.

from tkinter import Tk, Frame, Label, Entry, Button 

class App(Frame): 
    def __init__(root, master): 
     Frame.__init__(root, master) 
     root.grid() 
     root.create_widgets() 

    def get_values(root): 
     return [float(entry.get()) for entry in root.entries] 

    def calc_CR(root): 
     answer = sum(root.get_values()) #Replace with your own calculations 
     root.answer.config(text=str(answer)) 

    def create_widgets(root): 
     root.entries = [] 
     for i in range(20): 
      label = Label(root, text=str(i)) 
      label.grid(row=i, column=0) 

      entry = Entry(root, width=8) 
      entry.grid(row=i, column=1) 
      entry.insert(0, '0.00') 
      root.entries.append(entry) 

     root.calc_button = Button(root, text='Calculate C/R', command=root.calc_CR) 
     root.calc_button.grid(row=20, column=0) 

     root.answer = Label(root, text='0') 
     root.answer.grid(row=20, column=1) 

    def run(root): 
     root.mainloop() 



root = Tk() 
root.title('C/R Calculator') 

app = App(root) 
app.run() 
관련 문제