gpt4 book ai didi

python - 如果有很多小部件,让按钮向左对齐

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:50 24 4
gpt4 key购买 nike

我一直在尝试制作一个程序。当我有很多小部件时,我目前无法让所有按钮向左对齐。当我使用下面的代码时,它有很多小部件和它们的各种网格,我放置的按钮没有左对齐,而且我似乎找不到让它们左对齐的方法。

from tkinter import *
import tkinter as tk

def banana():
print ("Sundae")
def tomato():
print ("Ketchup")
def potato():
print ("Potato chips")

root = tk.Tk()
root.geometry("960x600")

label_toptitle = tk.Label(root,
text="Program Name",
font=(None, 40),
)
label_toptitle.grid(row=0,
columnspan=3
)

description = "To create rhythm, press the red record button. While recording, use the clicked note button to\n create a series of rectangle notes on screen. They can be held to extend the rectangles. \n\n Once you are done, press the red stop button to stop recording"

pixel = tk.PhotoImage(width=1, height=1)
label_desc = tk.Label(root,
image=pixel,
compound="center",
width=900,
font=(None, 14),
padx=20,
pady=10,
text=description
)
#bd=1,
#relief="solid",

#label_desc.pack(side="top", fill="both")
label_desc.grid(row=1,
columnspan=3,
#sticky=E
)

canvas = Canvas(width=960, height=400, bg='white')

canvas.grid(row=2,
column=0,
columnspan=3,
#expand=YES,
#fill=BOTH
)

canvas.create_rectangle(70, 18, 888, 208, width=5, fill='pink')
canvas.create_rectangle(257, 268, 349, 357, width=5, fill='pink')
canvas.create_rectangle(430, 268, 520, 357, width=5, fill='pink')
canvas.create_rectangle(597, 268, 689, 357, width=5, fill='pink')

gridbutt = Label(root, text="", anchor=W)
gridbutt.grid(row=3, column=0, columnspan=3)

f1 = tk.Frame(root, width=70, height=30)
f2 = tk.Frame(root, width=70, height=30)
f3 = tk.Frame(root, width=70, height=30)

f1.grid(row=3, column=0)
f2.grid(row=3, column=1)
f3.grid(row=3, column=2)

button_qwer = Button(f1, text="asdfasdf", command=banana)
button_asdf = Button(f2, text="asdfasdf", command=tomato)
button_zxcv = Button(f3, text="asdfasdf", command=potato)

button_qwer.place(x=0, y=0, relwidth=1, relheight=1)
button_asdf.place(x=0, y=0, relwidth=1, relheight=1)
button_zxcv.place(x=0, y=0, relwidth=1, relheight=1)

root.mainloop()

但是当我尝试像下面这样放置少量代码时,按钮会像我期望的那样左对齐。

from tkinter import *
import tkinter as tk

root = tk.Tk()
root.geometry("960x600")

f1 = tk.Frame(root, width=70, height=30)
f2 = tk.Frame(root, width=70, height=30)
f3 = tk.Frame(root, width=70, height=30)

f1.grid(row=3, column=0)
f2.grid(row=3, column=1)
f3.grid(row=3, column=2)

button_qwer = Button(f1, text="asdfasdf")
button_asdf = Button(f2, text="asdfasdf")
button_zxcv = Button(f3, text="asdfasdf")

button_qwer.place(x=0, y=0, relwidth=1, relheight=1)
button_asdf.place(x=0, y=0, relwidth=1, relheight=1)
button_zxcv.place(x=0, y=0, relwidth=1, relheight=1)

root.mainloop()

我还尝试使用“ anchor ”功能将按钮锚定在左侧,但它只给出了一个错误。我对框架做了同样的尝试,但也有错误。

如何让我的主程序的按钮向左对齐并像第二个程序默认情况下那样很好地向左聚集?

最佳答案

您将 3 个按钮放在 3 个不同的框架中,并将它们网格化在不同的列中。在这里,我将所有 3 个按钮放在一个框架中,将它们打包到左侧,并在第 0 列中将具有 3 个按钮的单个框架网格化,并在西边设置一个粘性选项。

它产生的外观与您的第二个代码示例相同。

import tkinter as tk
from tkinter import PhotoImage

def banana():
print ("Sundae")

def tomato():
print ("Ketchup")

def potato():
print ("Potato chips")


root = tk.Tk()
root.geometry("960x600")

label_toptitle = tk.Label(root, text="Program Name", font=(None, 40),)
label_toptitle.grid(row=0, columnspan=3)

description = "To create rhythm, press the red record button. While recording, use the clicked note button to\n create a series of rectangle notes on screen. They can be held to extend the rectangles. \n\n Once you are done, press the red stop button to stop recording"

pixel = PhotoImage(width=1, height=1)
label_desc = tk.Label(root, image=pixel, compound="center", width=900, font=(None, 14),
padx=20, pady=10, text=description)

label_desc.grid(row=1, columnspan=3)

canvas = tk.Canvas(width=960, height=400, bg='white')
canvas.grid(row=2, column=0, columnspan=3)

canvas.create_rectangle(70, 18, 888, 208, width=5, fill='pink')
canvas.create_rectangle(257, 268, 349, 357, width=5, fill='pink')
canvas.create_rectangle(430, 268, 520, 357, width=5, fill='pink')
canvas.create_rectangle(597, 268, 689, 357, width=5, fill='pink')

gridbutt = tk.Label(root, text="", anchor='w')
gridbutt.grid(row=3, column=0, columnspan=3)

f1 = tk.Frame(root, width=70, height=30)
f1.grid(row=3, column=0, sticky='W')

button_qwer = tk.Button(f1, text="asdfasdf", command=banana)
button_asdf = tk.Button(f1, text="asdfasdf", command=tomato)
button_zxcv = tk.Button(f1, text="asdfasdf", command=potato)

button_qwer.pack(side='left')
button_asdf.pack(side='left')
button_zxcv.pack(side='left')

root.mainloop()

关于python - 如果有很多小部件,让按钮向左对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52249421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com