2017-12-25 64 views
0

저는 파이썬에서 초보자이며 그리드로 첫 레이아웃을 시도하고 있습니다.파이썬 tkinter 격자 위치 지정

final layout

내 목록은 다음과 같습니다 :

1. root=Tk() 
2. root.geometry("640x480") 
3. root.title("Skroutz Parser") 

#entryText=StringVar(root) 
4. topFrame=Frame(root, bg='cyan', width = 640, height=80) 
5. middleFrame=Frame(root,bg='gray2', width=640, height=400) 
6. bottomFrame=Frame(root, bg='yellow', width = 640, height=50) 

# layout all of the main containers 
7. root.grid_rowconfigure(1, weight=1) 
8. root.grid_columnconfigure(0, weight=1) 

9. topFrame.grid(row=0) 
10.middleFrame.grid(row=1) 
11.bottomFrame.grid(row=2) 

# layout middle container 
12.middleFrame.grid_rowconfigure(0, weight=1) 
13.middleFrame.grid_columnconfigure(0, weight=1) 

14.leftFrame=Frame(middleFrame, bg='green', width = 125, height=400) 
15.rightFrame=Frame(middleFrame, bg='white', width = 515, height=400) 

16.leftFrame.grid(row=0,column=0,sticky="n") 
17.rightFrame.grid(row=0, column=1) 

18.buttonFeatured=Button(leftFrame, text=' Recommended ', pady=5, .command=showRecommendedProductsResults) 
19.buttonSkroutz=Button(leftFrame, text='Skroutz Products', pady=5, command=printSkroutzProducts) 
20.buttonFeatured.grid(row=0, column=0, sticky="n") 
21.buttonSkroutz.grid(row=1, column=0) 

22.entryText=StringVar() 
23.entryMain=Entry(rightFrame,textvariable=entryText, bg="white") 
24.entryMain.grid(row=0,column=0,rowspan=2,columnspan=5,sticky="w") 

25.root.mainloop() 

내가 선 18-24, 그때 내가 어느 정도 원하는 레이아웃을 얻을 언급 경우 는 내가 정말 필요한 것은이 레이아웃입니다 :

enter image description here

내가 주석을 제거하면 선 나는이 (왼쪽 프레임에 이상한 검은 색)를 취득 (주석 처리 된 줄 22-24 떠나) 18 ~ 21 :

enter image description here

내가 라인의 나머지 부분을 주석을 해제하는 경우를 ... . 난 엉망이 돼!

enter image description here

지금 이일 사투를 벌인거야,하지만 운이 .... 어떤 도움도 인정되지 않습니다! 감사!

+0

여러 줄 또는 한 줄짜리 텍스트 위젯을 원하십니까? – Nae

+0

코드에 중복 된 부분이 있기 때문에 [Minimal, Complete, Verifiable example] (https://stackoverflow.com/help/mcve)을 제공해주십시오. – Nae

+0

코드를 잘 구조화해야합니다. OOP 방식을 사용하면 이러한 스크립트를보다 쉽게 ​​구성 할 수 있습니다. – Nae

답변

1

다음 코드를 확인, 내가 추적 손실 여러 변화 만들었습니다 : 지금 당신은 더 큰 텍스트 영역을 원하는 경우

from tkinter import * 

root=Tk() 
root.geometry("640x480") 
root.title("Skroutz Parser") 

#entryText=StringVar(root) 
topFrame=Frame(root, bg='cyan', width = 640, height=80) 
middleFrame=Frame(root,bg='gray2', width=640, height=400) 
bottomFrame=Frame(root, bg='yellow', width = 640, height=50) 

# layout all of the main containers 
root.grid_rowconfigure(1, weight=1) 
root.grid_columnconfigure(0, weight=1) 

topFrame.grid(row=0, column=0, sticky='ew') 
middleFrame.grid(row=1, column=0, sticky='nsew') 
bottomFrame.grid(row=2, column=0, sticky='ew') 

# layout middle container 
middleFrame.grid_rowconfigure(0, weight=1) 
middleFrame.grid_columnconfigure(1, weight=1) 

leftFrame=Frame(middleFrame, bg='green', width = 125, height=400) 
rightFrame=Frame(middleFrame, bg='white', width = 515, height=400) 

leftFrame.grid(row=0,column=0,sticky="nsew") 
rightFrame.grid(row=0, column=1, sticky='nsew') 

leftFrame.grid_columnconfigure(0, weight=1) 
rightFrame.grid_rowconfigure(0, weight=1) 
rightFrame.grid_columnconfigure(0, weight=1) 

buttonFeatured=Button(leftFrame, text=' Recommended ', pady=5) 
buttonSkroutz=Button(leftFrame, text='Skroutz Products', pady=5) 
buttonFeatured.grid(row=0, column=0, sticky="new") 
buttonSkroutz.grid(row=1, column=0, sticky='new') 

entryText=StringVar() 
entryMain=Entry(rightFrame,textvariable=entryText, bg="white") 
entryMain.grid(row=0,column=0,sticky="new") 

root.mainloop() 

을 할 수 있습니다 증가 글꼴 크기 나 대신 멀티 라인 입력을 할 수 있습니다, Text의 크기를 구성 할 수 있습니다.

당신은 정말로 structure question & answers을 확인해야합니다.