【问题标题】:Tkinter frames are not generated properly windowTkinter 帧没有正确生成窗口
【发布时间】:2017-03-01 10:31:10
【问题描述】:
root=Tk()
#root.geometry('800x500+100+100')
#root.resizable(0,0)
root.title('Lottery Number Generator')
frame_1 = Frame(root).pack(side=TOP)
num1 = IntVar()
num2 = IntVar()
num3 = IntVar()
num4 = IntVar()
num5 = IntVar()
num6 = IntVar()

var=StringVar()
var.set("Lucky Lottery generator")

label = Label(frame_1,textvariable=var,font=('times',24,'bold'),width=26).pack(side=TOP)
label = Label(frame_1,textvariable='',width=32).pack(side=TOP)
#label = Label(frame_1,textvariable='',width=32).pack(side=TOP)


frame_2 = Frame(root).pack(side=TOP)

entry_1 = Entry(frame_2,width=4,font=('arial',30),justify=CENTER,bd=20,insertwidth=1,textvariable=num1).pack(side=LEFT)
entry_2 = Entry(frame_2,width=4,font=('arial',30),justify=CENTER,bd=20,insertwidth=1,textvariable=num2).pack(side=LEFT)
entry_3 = Entry(frame_2,width=4,font=('arial',30),justify=CENTER,bd=20,insertwidth=1,textvariable=num3).pack(side=LEFT)
entry_4 = Entry(frame_2,width=4,font=('arial',30),justify=CENTER,bd=20,insertwidth=1,textvariable=num4).pack(side=LEFT)
entry_5 = Entry(frame_2,width=4,font=('arial',30),justify=CENTER,bd=20,insertwidth=1,textvariable=num5).pack(side=LEFT)
entry_6 = Entry(frame_2,width=4,font=('arial',30),justify=CENTER,bd=20,insertwidth=1,textvariable=num6).pack(side=LEFT)

frame_3 = Frame(frame_2,bg='black').pack(side=BOTTOM)

button =Button(frame_3,bg='green',padx=8,pady=8,font=('times',14,'bold'),width=18,text='Generate Numbers',command=lotto).pack(side=TOP)

我创建了 3 个框架并设置了“side=top”。框架包含标签、条目、按钮等。但是,我的第三个框架没有正确显示;它显示在第 2 帧的右侧。

请帮忙!

【问题讨论】:

    标签: tkinter


    【解决方案1】:

    您的问题可以通过解决以下问题来解决:

    • 您正在框架 2 内创建框架 3。它应该在根目录上创建:

    frame_3 = Frame(root,bg='black')

    • 您应该将设计部分与“.pack”分开。所以把所有的“.packs”(至少对于框架)放在最后,像这样:
    # Place all the frames
    frame_1.pack(side=TOP)
    frame_2.pack(side=TOP)
    frame_3.pack(side=TOP)
    

    通过这些更改,按钮会根据需要显示在底部。没有必要用 'side=BOTTOM' 打包最后一帧,因为您之前已经打包了前两帧。

    请在未来提供一个最小的工作示例(您缺少 root.mainloop() 并且未定义按钮的命令)。

    【讨论】:

    • 你确定下次我会确保 req 代码存在并且还有 1 个疑问我必须在创建 3 帧时清除,第三帧将被放置在第 2 帧的右侧?还是在第 2 帧的下方?
    • 我不确定我是否理解您的疑问...我的意思是您可以将框架放置在您需要的地方。要清除框架,不必删除框架本身:您可以销毁框架的子级。见stackoverflow.com/a/15995920/2726773
    • 实际上我需要知道前,如果我有 3 帧,3 帧将如何放置在根窗口中(所有 3 帧都在 side=TOP)
    • 框架相对于彼此放置。因此,您放置的第一帧将位于窗口顶部,而最后一帧将位于底部,尽管您使用的是“side=TOP”。
    • 实际上我发现在创建第一个 frame1 时它占据了整个根,然后在创建第 2 帧时它占据了底部,最后当我创建第 3 帧时我占据了第 2 帧的右侧[提示 -->所有框架都打包了,side=TOP] 这就是我发现的人
    猜你喜欢
    • 2011-08-27
    • 2013-10-21
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多