我一直在尝试制作一个程序。当我有很多小部件时,我目前无法让所有按钮向左对齐。当我使用下面的代码时,其中有很多小部件及其各种网格,我放置的按钮没有左对齐,而且我似乎找不到一种方法让它们左对齐。
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()
我还尝试使用“锚定”功能将按钮锚定到左侧,但它只给出了错误。我对框架做了同样的尝试,但也有错误。
如何让主程序的按钮向左对齐并像第二个程序默认情况下那样向左聚集?
最佳答案
您将 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/