2017-12-19 16 views
1

나는 tkinter를 사용하여 클래스 중 하나에 대한 일종의 계산기를 만들고, 이름을 제외하고 매번 동일한 코드 행을 사용하여 격자 레이아웃에서 20 개의 레이블을 만들었습니다. 분명히 행 번호. 나는 이런 식으로 레이블을 빠르고 효과적으로 만들 수있는 표준 방법이 있는지 궁금 해서요 아니면 누군가가 지루함을 깨는 데 사용하는 빠른 방법이 있다면?위젯 대량 생성

예를 들어, 내 "코드"는 기본적으로 다음과 같습니다.

label0 = tk.Label(frame, 
        text="Label0") 
label0.grid(row=0, 
      column=0, 
      sticky="E") 

label1 = tk.Label(frame, 
        text="Label1") 
label1.grid(row=1, 
      column=0, 
      sticky="E") 

... 

labeln = tk.Label(frame, 
        text="Labeln") 
labeln.grid(row=n, 
      column=0, 
      sticky="E") 

나는

labelnames = ["label0", 
       "labebl1", 
       ..., 
       "labeln"] 

for i in len(labelnames): 
    labelx = tk.Label(frame, 
         text=labelnames[i]) 
    labelx.grid(row=i, 
       column=0, 
       sticky="E") 

이 작동 뭔가를 한 후, 모든 레이블 이름의 목록 또는 라이브러리를 만드는 말했지만,이 점은 배울 수 있었고, 난 알고 싶습니다있다 이를 수행하기위한 표준 또는 "올바른"방법입니다. 나는 아직도 그들을 이해하지 못하기 때문에 수업을 사용하는 것을 배회하는 경향이있다. (나는 아이러니 컬하다.) 그러나 나는 이것이 그들을 위해 더 나은 용도인지를 배우고 싶다.

나를 위해 발생하는이 메서드의 문제는 비슷한 루프를 사용하여 만든 각 레이블에 해당하는 항목 상자가 있고이 방법으로 항목의 입력을 얻는 방법을 모르겠습니다.

+0

는 IMO 목록 및 루프 – paisanco

+0

여기 아주 간단한 질문에 대한 나쁜 생각하는 경우 BTW reddit.com/r/learnpython 같은 더 초보자 집중 포럼을 거기에 정말 아무 문제가 없다. – Novel

답변

2

제대로하고 있습니다. 우리는 enumerate를 사용하여 약간의 깔끔한 만들 수 :

labels = [] 
for i, label in enumerate(labelnames): 
    labelx = tk.Label(frame, text=label) 
    labelx.grid(row=i, column=0, sticky="E") 
    labels.append(labelx) 

나는 또한 목록에 결과 위젯을 추가했다. 그렇게하면 나중에 액세스 할 수 있습니다.

labels[2].config(text='new text') # update the text on the 3rd Label