python tkinter网格定位

python tkinter网格定位,python,tkinter,grid,Python,Tkinter,Grid,我是Python的新手,正在尝试我的第一个网格布局。 我真正需要的是这种布局: 我的名单是: 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', widt

我是Python的新手,正在尝试我的第一个网格布局。 我真正需要的是这种布局:

我的名单是:

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行进行注释,则或多或少会得到所需的布局:

如果我取消对第18-21行的注释(保留注释的第22-24行),那么我会得到以下结果(左框上奇怪的黑色):

如果我取消对其余行的注释…我会弄得一团糟

我已经挣扎了两天了,但是运气不好。。。。
任何帮助都将不胜感激!谢谢

检查下面的代码,我做了多次更改,但我忘记了:

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
,您可以配置文本的大小


你真的应该检查一下。

你想要多行或单行文本小部件吗?请按原样提供你的代码有多余的部分。你必须更好地构造你的代码,否则事情可能会像这样失控。OOP方法确实使您更容易组织这样的脚本。