简体   繁体   中英

tkinter insert widget in a frame

I am trying to make the following layout tkinter layout but the ID: label and the entry box are center left, and center right when then they should be next to each other, and they keep getting separated by the grid I am also trying to use a for loop to make the number pad but im not sure how to make a new variable outside of the loops, and increment by 1 in the loop that creates the button

from tkinter import *

window = Tk()


#BOTTOM FRAME SECTION

bottomframe = Frame(window,bg="cyan", width =900, height = 100)
bottomframe.pack(fill=BOTH,side=BOTTOM)
button = Button(window,text="LOG IN")
button.pack(fill=BOTH,side=BOTTOM)
checkbutton = Checkbutton(window, text="Use pseudonym?")
checkbutton.pack(side=BOTTOM)

topframe = Frame(window,bg="red",width =900, height = 100)
topframe.pack(fill=BOTH,side=TOP)
label1 = Label(window, text="Majestic 12 Identifier")
label1.pack(side=TOP)
label2 = Label(window, text="ID")
label2.pack(side=LEFT)
label3 = Label(window,text="Enter keycode:")
label3.pack(side=TOP)
entry1 = Entry(window)
entry1.pack(side=LEFT)

#GRID  SECTION
frame = Frame(window)
frame.pack(fill=BOTH,side=BOTTOM)

n = +1
for i in range(3):
    Grid.rowconfigure(frame,i,weight=1)
    Grid.columnconfigure(frame,i,weight=1)

for i in range(3):
    b = Button(frame, text="%d" % (i+n))
    for j in range(3):
        b = Button(frame, text="%d" % (j+1))
        b.grid(row=i, column=j,ipadx=2,ipady=2,padx=2,pady=2,sticky= W+E+N+S)

window.mainloop()

any help is welcome

Ok, I gave it a try. I played around a bit with the Frame objects. I deleted one, that was not needed. And I introduced topframe2 in order to make it possible for label2 and entry1 to be in the same row.

Watch carefully the parent of the various entries and labels. Not everything should get the window object as direct parent.

I am using expand and fill arguments - here I am basically applying what I just learned at Textbox not expanding with containing frame - TKinter and tkinter gui layout using frames and grid

from tkinter import *

window = Tk()

# BOTTOM FRAME SECTION

topframe = Frame(window, width=900, height=100)
topframe.pack(fill=BOTH, side=TOP)

label1 = Label(topframe, text="Majestic 12 Identifier")
label1.pack(side=TOP, fill=BOTH, expand=1)

topframe2 = Frame(topframe, width=900, height=100)
topframe2.pack(fill=BOTH, side=TOP)

label2 = Label(topframe2, text="ID")
label2.pack(side=LEFT)

entry1 = Entry(topframe2)
entry1.pack(side=LEFT, fill=X, expand=1)

label3 = Label(window, text="Enter keycode:")
label3.pack(side=TOP)

# GRID SECTION
frame = Frame(window)
frame.pack(fill=BOTH, side=TOP, expand=1)

n = +1
for i in range(3):
    Grid.rowconfigure(frame, i, weight=1)
    Grid.columnconfigure(frame, i, weight=1)

for i in range(3):
    b = Button(frame, text="%d" % (i + n))
    for j in range(3):
        b = Button(frame, text="%d" % (j + 1))
        b.grid(row=i, column=j, ipadx=2, ipady=2, padx=2, pady=2, sticky=W + E + N + S)

button = Button(window, text="LOG IN")
button.pack(fill=BOTH, side=BOTTOM)

checkbutton = Checkbutton(window, text="Use pseudonym?")
checkbutton.pack(side=BOTTOM)

if __name__ == '__main__':
    window.mainloop()



The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM