2013-05-16 6 views
0

.grid()를 사용하여 tkinter 레이아웃을 만들려고합니다. 내 모든 단추가 왼쪽에 정렬되어 있고 오른쪽에 텍스트 상자를 넣고 싶습니다. 문제는 내가 그렇게하려고 할 때 왼쪽의 버튼을 엉망으로 만든다는 것입니다. 여러 프레임을 사용하려고했지만 작동하지 않는 것 같습니다. 어떤 아이디어? 그리드 형상 관리자에 대해 알아야 할 가장 중요한 사항 중Python Tkinter 레이아웃 문제

답변

3

하나는 columnspanrowspan 키워드입니다 : 여기에 일반적인 사용은 올바른 columnspanrowspan와 격자 Frame을 사용하는 것입니다

import Tkinter as tk 

root = tk.Tk() 
buttons = [tk.Button(root,text=str(i)) for i in range(6)] 
for i,b in enumerate(buttons): 
    b.grid(row=i,column=0) 

textbox = tk.Text(root) 
textbox.grid(row=0,column=1,rowspan=6) 

root.mainloop() 

하는 것으로. 그런 다음이를 사용하여 데이터를 관리 할 수 ​​있습니다. 내가 위에서 무엇을하는 또 다른 방법은 바로 옆에있는 버튼의 모든 다음 모눈 Text 위젯을 길게하기 위해 Frame을 사용하는 것입니다 :

import Tkinter as tk 

root = tk.Tk() 
frame = tk.Frame(root) 
frame.grid(row=0,column=0) 
buttons = [tk.Button(frame,text=str(i)) for i in range(6)] 
for i,b in enumerate(buttons): 
    b.grid(row=i,column=0) 

textbox = tk.Text(root) 
textbox.grid(row=0,column=1) 

root.mainloop() 
2

당신이 격자 형상 관리자를 사용하는 경우는 필요하지 않습니다 2 열 레이아웃의 프레임을 사용합니다. rowspan을 사용하여 텍스트 위젯의 높이를 버튼 수에 맞게 조정할 수 있습니다.

from Tkinter import * 

root = Tk() 
N = 5 

for i in range(N): 
    Button(root, text="Button %s" % i).grid(row=i, column=0, padx=5) 
Text(root, width=30).grid(row=0, column=1, rowspan=N, padx=5) 

root.mainloop()