python - 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()
欢迎任何帮助
解决方案
好的,我试了一下。我玩了一下这些Frame
物体。我删了一个,不需要。我介绍topframe2
是为了使它们能够在同一行中label2
。entry1
仔细观察各种条目和标签的父级。并非所有事物都应将window
对象作为直接父对象。
我正在使用expand
和fill
参数 - 在这里我基本上应用了我刚刚在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()
推荐阅读
- c++ - 谁能详细解释一下这个程序
- css - 如何使用 CSS 将输入值居中
- c# - RavenDB 和 XUnit:每个 TestClass 的多个测试
- mongodb - Mongo找出连接读取偏好
- google-cloud-platform - 导出到 Cloud Storage 时,Google Cloud Logging 接收器如何工作?导出的格式是什么?
- java - 注销不适用于 Spring Boot、Spring Security 和 Thymleaf
- amazon-dynamodb - 日期范围和用户 ID 的 DynamoDB 主键
- typescript - 如何获取对象数组中给定对象键的所有文字值的并集?
- database - 哪个关系模式捕获了这个系统的语义
- javascript - 通过 Axios 下载多个文件并 .zip 压缩它们