更改尺寸时无法调整高度和宽度

时间:2020-07-31 11:58:43

标签: python user-interface tkinter

from tkinter import *


win = Tk()
win.title('McDonald ordering system')
win.geometry('600x300')


lbtitle = Label(win,text='Welcome to McDonald',bg='yellow')
lbtitle.grid(row=0,column=1,columnspan=3)

f1 = Frame(win,bd=2,width=200,height=250,relief=GROOVE)
f1.grid(row=1,column=0,rowspan=3)

f2 = Frame(win,bd=2,width=200,height=250,relief=GROOVE)
f2.grid(row=1,column=1,rowspan=3)

f3 = Frame(win,bd=2,width=200,height=250,relief=GROOVE)
f3.grid(row=1,column=2,rowspan=3)

lb1 = Label(f1,text='Big Mac')
lb1.grid(row=0,column=0,padx=10,pady=10)

am1 = IntVar()
en1 = Entry(f1,textvariable=am1,width=5)
en1.grid(row=0,column=1,padx=10,pady=10)

lb2 = Label(f1,text='Cheeseburger')
lb2.grid(row=1,column=0,padx=10,pady=10)

am2 = IntVar()
en2 = Entry(f1,textvariable=am2,width=5)
en2.grid(row=1,column=1,padx=10,pady=10)

lb3 = Label(f1,text='Nuggets')
lb3.grid(row=2,column=0,padx=10,pady=10)

am3 = IntVar()
en3 = Entry(f1,textvariable=am3,width=5)
en3.grid(row=2,column=1,padx=10,pady=10)

lb4 = Label(f1,text='Chicken')
lb4.grid(row=3,column=0,padx=10,pady=10)

am4 = IntVar()
en4 = Entry(f1,textvariable=am4,width=5)
en4.grid(row=3,column=1,padx=10,pady=10)


lb5 = Label(f2,text='Cheesecake')
lb5.grid(row=0,column=0,padx=10,pady=10)

am5 = IntVar()
en5 = Entry(f2,textvariable=am5,width=5)
en5.grid(row=0,column=1,padx=10,pady=10)

lb6 = Label(f2,text='Chocolate Cake')
lb6.grid(row=1,column=0,padx=10,pady=10)

am6 = IntVar()
en6 = Entry(f2,textvariable=am6,width=5)
en6.grid(row=1,column=1,padx=10,pady=10)

lb7 = Label(f2,text='McFlurry')
lb7.grid(row=2,column=0,padx=10,pady=10)

am7 = IntVar()
en7 = Entry(f2,textvariable=am7,width=5)
en7.grid(row=2,column=1,padx=10,pady=10)

lb8 = Label(f2,text='Pepsi')
lb8.grid(row=3,column=0,padx=10,pady=10)

am8 = IntVar()
em8 = Entry(f2,textvariable=am8,width=5)
em8.grid(row=3,column=1,padx=10,pady=10)


win.mainloop()

框架现在可以工作,但是如果我更改框架的高度和宽度,并且每次都运行时大小仍然相同。我不知道出了什么问题,但是我已经搜索了提到的书籍,可以在开始时设置尺寸。那么如何调整高度和宽度呢?帧的大小是里面的元素算出来的还是我可以在开始时设置大小?

1 个答案:

答案 0 :(得分:0)

您在问题中写道,您是通过Frame导入from tkinter import *的。因此,您无需再次导入。

要使窗口可见,请在脚本末尾添加win.mainloop()

更新:

这是从终端执行程序时(在脚本末尾有win.mainloop())在我的系统上的样子。

enter image description here

更新2:

我通过从标签中删除columnspan并禁用了grid_propagate来调整框架的大小来更改了本节:

lbtitle = Label(win,text='Welcome to McDonald',bg='yellow')
lbtitle.grid(row=0,column=1)

f1 = Frame(win,bd=2,width=200,height=250,relief=GROOVE)
f1.grid(row=1,column=0,rowspan=3)
f1.grid_propagate(0)

f2 = Frame(win,bd=2,width=200,height=250,relief=GROOVE)
f2.grid(row=1,column=1,rowspan=3)
f2.grid_propagate(0)

f3 = Frame(win,bd=2,width=200,height=250,relief=GROOVE)
f3.grid(row=1,column=2,rowspan=3)
f3.grid_propagate(0)

结果如下:

enter image description here