为了账号安全,请及时绑定邮箱和手机立即绑定

python pack()和grid()方法在一起

python pack()和grid()方法在一起

慕运维8079593 2021-04-01 16:06:23
我是python的新手,所以请原谅我的Noob-ness。我试图在我的应用程序窗口的底部创建一个状态栏,但是似乎每次我在同一文件中同时使用pack()和grid()方法时,主应用程序窗口都不会打开。当我注释掉显示statusbar.pack(side = BOTTOM,fill = X)的行时,我的应用程序窗口可以很好地打开,但是如果我将其保留在里面,也可以注释掉所有使用grid方法的行随即打开带有状态栏的窗口。看来我只能使用pack()或grid(),但不能同时使用。我知道我应该能够同时使用这两种方法。有什么建议?这是代码:from Tkinter import *import tkMessageBoxdef Quit(): answer = tkMessageBox.askokcancel('Quit', 'Are you sure?') if answer:    app.destroy()app = Tk()app.geometry('700x500+400+200')app.title('Title')label_1 = Label(text = "Enter number")label_1.grid(row = 0, column = 0)text_box1 = DoubleVar() input1 = Entry(app, textvariable = text_box1)input1.grid(row = 0, column = 2)statusbar = Label(app, text = "", bd = 1, relief = SUNKEN, anchor = W)statusbar.pack(side = BOTTOM, fill = X)startButton = Button(app, text = "Start", command = StoreValues).grid(row = 9, column = 2,  padx = 15, pady = 15)app.mainloop() 
查看完整描述

2 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

是的,没错。在下面的示例中,我将程序分为2个帧。frame1用于菜单/工具栏,并使用pack()方法,其中frame2用于制作登录页面凭据,并使用grid()方法。


from tkinter import *


def donothing():

    print ('IT WORKED')

root=Tk()

root.title(string='LOGIN PAGE')


frame1=Frame(root)

frame1.pack(side=TOP,fill=X)


frame2=Frame(root)

frame2.pack(side=TOP, fill=X)


m=Menu(frame1)

root.config(menu=m)


submenu=Menu(m)

m.add_cascade(label='File',menu=submenu)

submenu.add_command(label='New File', command=donothing)

submenu.add_command(label='Open', command=donothing)

submenu.add_separator()

submenu.add_command(label='Exit', command=frame1.quit)



editmenu=Menu(m)

m.add_cascade(label='Edit', menu=editmenu)

editmenu.add_command(label='Cut',command=donothing)

editmenu.add_command(label='Copy',command=donothing)

editmenu.add_command(label='Paste',command=donothing)

editmenu.add_separator()

editmenu.add_command(label='Exit', command=frame1.quit)



# **** ToolBar *******


toolbar=Frame(frame1,bg='grey')

toolbar.pack(side=TOP,fill=X)

btn1=Button(toolbar, text='Print', command=donothing)

btn2=Button(toolbar, text='Paste', command=donothing)

btn3=Button(toolbar, text='Cut', command=donothing)

btn4=Button(toolbar, text='Copy', command=donothing)

btn1.pack(side=LEFT,padx=2)

btn2.pack(side=LEFT,padx=2)

btn3.pack(side=LEFT,padx=2)

btn4.pack(side=LEFT,padx=2)


# ***** LOGIN CREDENTIALS ******

label=Label(frame2,text='WELCOME TO MY PAGE',fg='red',bg='white')

label.grid(row=3,column=1)


label1=Label(frame2,text='Name')

label2=Label(frame2,text='Password')

label1.grid(row=4,column=0,sticky=E)

label2.grid(row=5,column=0,sticky=E)


entry1=Entry(frame2)

entry2=Entry(frame2)

entry1.grid(row=4,column=1)

entry2.grid(row=5,column=1)


chk=Checkbutton(frame2,text='KEEP ME LOGGED IN')

chk.grid(row=6,column=1)


btn=Button(frame2,text='SUBMIT')

btn.grid(row=7,column=1)





# **** StatusBar ******************


status= Label(root,text='Loading',bd=1,relief=SUNKEN,anchor=W)

status.pack(side=BOTTOM, fill=X)


查看完整回答
反对 回复 2021-04-05
  • 2 回答
  • 0 关注
  • 433 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信