在 Tkinter 中使用锚点
Using Anchor In Tkinter
我正在尝试对自动点唱机进行编程,但是我处于早期阶段并且在使用 anchor
时遇到了问题。
这是我的代码;
from tkinter import *
from tkinter import messagebox as box
def main_menu():
window = Tk()
window.title('Juke Box')
window.geometry('800x480')
window.configure(background = 'black')
label = Label(window, text = 'Juke-Box', fg = 'light green', bg = 'black', font = (None, 30), height = 2)
label.pack(side = TOP)
Jam = Button(window, text = 'The Jam', width = 25, height = 2)
Jam.pack(pady = 10, padx = 25, anchor = 'w')
Roses = Button(window, text = 'The Stone Roses', width = 25, height = 2)
Roses.pack(pady = 10, padx = 25, anchor = 'w')
Smiths = Button(window, text = 'The Smiths', width = 25, height = 2)
Smiths.pack(pady = 10, padx = 25, anchor = 'w')
Wedding = Button(window, text = 'The Wedding Pressent', width = 25, height = 2)
Wedding.pack(pady = 10, padx = 25, anchor = 'w')
Blondie = Button(window, text = 'Blondie', width = 25, height = 2)
Blondie.pack(pady = 10, padx = 25, anchor = 'w')
Clash = Button(window, text = 'Clash', width = 25, height = 2)
Clash.pack(pady = 10, padx = 25, anchor = 'w')
Madness = Button(window, text = 'Madness', width = 25, height = 2)
Madness.pack(pady = 10, padx = 25, anchor = 'n')
Pistols = Button(window, text = 'The Sex Pistols', width = 25, height = 2)
Pistols.pack(pady = 10, padx = 25, anchor = 'n')
window.mainloop()
main_menu()
我的问题是因为我 运行 把我的相册往左堆放时空间不足 我想开始往中间堆放它们所以我使用了 anchor = 'n'
但是它把它们都移到了底.
谁能帮我找到一种从顶部中间开始堆叠相册的方法。
我正在使用 python 3.
对于您想做的事情,grid
几何似乎是一个更好的主意,您可以明确编码项目的位置,而不是让 pack
几何隐式确定它会去哪里。
另一个改进是在放置每张专辑 Button
的地方有一个 Frame
。
我已经编辑了你的代码:
from tkinter import *
from tkinter import messagebox as box
def main_menu():
window = Tk()
window.title('Juke Box')
window.geometry('800x480')
window.configure(background = 'black')
label = Label(window, text = 'Juke-Box', fg = 'light green',
bg = 'black', font = (None, 30), height = 2)
label.pack(side = TOP)
gridFrame = Frame(window, bg='black') # New frame to store buttons
# Grid uses sticky instead of anchor, but in this scenario it is not really necessary
# I have left it in case you need it for some other reason
Jam = Button(gridFrame, text = 'The Jam', width = 25, height = 2)
Jam.grid(row=0, column=0, pady = 10, padx = 25, sticky=W)
Roses = Button(gridFrame, text = 'The Stone Roses', width = 25, height = 2)
Roses.grid(row=1, column=0, pady = 10, padx = 25, sticky=W)
Smiths = Button(gridFrame, text = 'The Smiths', width = 25, height = 2)
Smiths.grid(row=2, column=0, pady = 10, padx = 25, sticky =W)
Wedding = Button(gridFrame, text = 'The Wedding Pressent', width = 25, height = 2)
Wedding.grid(row=3, column=0, pady = 10, padx = 25, sticky =W)
Blondie = Button(gridFrame, text = 'Blondie', width = 25, height = 2)
Blondie.grid(row=4, column=0, pady = 10, padx = 25, sticky =W)
Clash = Button(gridFrame, text = 'Clash', width = 25, height = 2)
Clash.grid(row=5, column=0, pady = 10, padx = 25, sticky =W)
Madness = Button(gridFrame, text = 'Madness', width = 25, height = 2)
Madness.grid(row=0, column=1, pady = 10, padx = 25, sticky =N)
Pistols = Button(gridFrame, text = 'The Sex Pistols', width = 25, height = 2)
Pistols.grid(row=1, column=1, pady = 10, padx = 25, sticky =N)
gridFrame.pack(side=BOTTOM)
# Place it a the bottom or top or wherever you want it to go
window.mainloop()
main_menu()
这是网格几何形状的屏幕截图:
这是你想要的吗?
希望对你有帮助^^
我正在尝试对自动点唱机进行编程,但是我处于早期阶段并且在使用 anchor
时遇到了问题。
这是我的代码;
from tkinter import *
from tkinter import messagebox as box
def main_menu():
window = Tk()
window.title('Juke Box')
window.geometry('800x480')
window.configure(background = 'black')
label = Label(window, text = 'Juke-Box', fg = 'light green', bg = 'black', font = (None, 30), height = 2)
label.pack(side = TOP)
Jam = Button(window, text = 'The Jam', width = 25, height = 2)
Jam.pack(pady = 10, padx = 25, anchor = 'w')
Roses = Button(window, text = 'The Stone Roses', width = 25, height = 2)
Roses.pack(pady = 10, padx = 25, anchor = 'w')
Smiths = Button(window, text = 'The Smiths', width = 25, height = 2)
Smiths.pack(pady = 10, padx = 25, anchor = 'w')
Wedding = Button(window, text = 'The Wedding Pressent', width = 25, height = 2)
Wedding.pack(pady = 10, padx = 25, anchor = 'w')
Blondie = Button(window, text = 'Blondie', width = 25, height = 2)
Blondie.pack(pady = 10, padx = 25, anchor = 'w')
Clash = Button(window, text = 'Clash', width = 25, height = 2)
Clash.pack(pady = 10, padx = 25, anchor = 'w')
Madness = Button(window, text = 'Madness', width = 25, height = 2)
Madness.pack(pady = 10, padx = 25, anchor = 'n')
Pistols = Button(window, text = 'The Sex Pistols', width = 25, height = 2)
Pistols.pack(pady = 10, padx = 25, anchor = 'n')
window.mainloop()
main_menu()
我的问题是因为我 运行 把我的相册往左堆放时空间不足 我想开始往中间堆放它们所以我使用了 anchor = 'n'
但是它把它们都移到了底.
谁能帮我找到一种从顶部中间开始堆叠相册的方法。
我正在使用 python 3.
对于您想做的事情,grid
几何似乎是一个更好的主意,您可以明确编码项目的位置,而不是让 pack
几何隐式确定它会去哪里。
另一个改进是在放置每张专辑 Button
的地方有一个 Frame
。
我已经编辑了你的代码:
from tkinter import *
from tkinter import messagebox as box
def main_menu():
window = Tk()
window.title('Juke Box')
window.geometry('800x480')
window.configure(background = 'black')
label = Label(window, text = 'Juke-Box', fg = 'light green',
bg = 'black', font = (None, 30), height = 2)
label.pack(side = TOP)
gridFrame = Frame(window, bg='black') # New frame to store buttons
# Grid uses sticky instead of anchor, but in this scenario it is not really necessary
# I have left it in case you need it for some other reason
Jam = Button(gridFrame, text = 'The Jam', width = 25, height = 2)
Jam.grid(row=0, column=0, pady = 10, padx = 25, sticky=W)
Roses = Button(gridFrame, text = 'The Stone Roses', width = 25, height = 2)
Roses.grid(row=1, column=0, pady = 10, padx = 25, sticky=W)
Smiths = Button(gridFrame, text = 'The Smiths', width = 25, height = 2)
Smiths.grid(row=2, column=0, pady = 10, padx = 25, sticky =W)
Wedding = Button(gridFrame, text = 'The Wedding Pressent', width = 25, height = 2)
Wedding.grid(row=3, column=0, pady = 10, padx = 25, sticky =W)
Blondie = Button(gridFrame, text = 'Blondie', width = 25, height = 2)
Blondie.grid(row=4, column=0, pady = 10, padx = 25, sticky =W)
Clash = Button(gridFrame, text = 'Clash', width = 25, height = 2)
Clash.grid(row=5, column=0, pady = 10, padx = 25, sticky =W)
Madness = Button(gridFrame, text = 'Madness', width = 25, height = 2)
Madness.grid(row=0, column=1, pady = 10, padx = 25, sticky =N)
Pistols = Button(gridFrame, text = 'The Sex Pistols', width = 25, height = 2)
Pistols.grid(row=1, column=1, pady = 10, padx = 25, sticky =N)
gridFrame.pack(side=BOTTOM)
# Place it a the bottom or top or wherever you want it to go
window.mainloop()
main_menu()
这是网格几何形状的屏幕截图:
这是你想要的吗?
希望对你有帮助^^