首页 > 解决方案 > tkinter 在框架中插入小部件

问题描述

我正在尝试制作以下布局 tkinter 布局 ,但 ID: label 和输入框位于左中,并且在它们应该彼此相邻时居中,并且它们不断被网格分开我也在尝试使用一个用于制作数字键盘的 for 循环,但我不确定如何在循环之外创建一个新变量,并在创建按钮的循环中增加 1

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()

欢迎任何帮助

标签: pythontkinter

解决方案


好的,我试了一下。我玩了一下这些Frame物体。我删了一个,不需要。我介绍topframe2是为了使它们能够在同一行中label2entry1

仔细观察各种条目和标签的父级。并非所有事物都应将window对象作为直接父对象。

我正在使用expandfill参数 - 在这里我基本上应用了我刚刚在Textbox 中学到的内容,而不是使用包含框架进行扩展 - 使用框架和网格的 TKinter和 tkinter gui 布局

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()




推荐阅读