gpt4 book ai didi

python - 我的按钮并排放置在我的主窗口中,但它们出现在中间。我如何让他们更上一层楼?

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

enter image description here

我对 Shop 类也有类似的问题。如果我使用:

      button1.pack(side=TOP, anchor=NW, padx=10, pady=60, expand=NO)
button2.pack(side=TOP, anchor=NW, padx=30, pady=60, expand=NO)
button3.pack(side=TOP, anchor=NW, padx=60, pady=60, expand=NO)

enter image description here

但随后所有其他人都显得越来越低,我不知道为什么,除非我的框架有问题?

如果我用这个,

      button1.pack(side=LEFT, anchor=NW, fill=BOTH, expand=1)
button2.pack(side=LEFT, anchor=NW, fill=BOTH, expand=1)
button3.pack(side=LEFT, anchor=NW, fill=BOTH, expand=1)

然后我所有的按钮并排出现,但再次出现在屏幕中间,就像在我的主屏幕上一样:

enter image description here

有人可以向我解释一下这是怎么回事吗?我认为我不了解有关框架的一些基础知识。请帮忙!!!!

import Tkinter as tk   
from Tkinter import *

TITLE_FONT = (“Helvetica”, 18, “bold”)
CREDITS_FONT = (“Helvetica”, 12, “bold”)

class App(tk.Tk):

def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)

container = tk.Frame(self)
container.pack(side=“top”, fill=“both”, expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)

self.frames = {}
for F in (Home, My_Plnts, Jrnl, Shop, Mail):
page_name = F.__name__
frame = F(parent=container, controller=self)
self.frames[page_name] = frame

frame.grid(row=0, column=0, sticky=“nsew”)

self.show_frame(“Home”)

def show_frame(self, page_name):

frame = self.frames[page_name]
frame.tkraise()

class Home(tk.Frame):

def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller

Home.configure(self, background=’#ade5ad’)

label = tk.Label(self, text=“Welcome Home, Maebert!”, background=’#ade5ad’, font=TITLE_FONT)
label.pack(side=“top”, fill=“x”, pady=10)

button1 = tk.Button(self, text=“My Plnts”,
command=lambda: controller.show_frame(“My_Plnts”))
button2 = tk.Button(self, text=“Jrnl”,
command=lambda: controller.show_frame(“Jrnl”))
button3 = tk.Button(self, text=“Shop”,
command=lambda: controller.show_frame(“Shop”))
button4 = tk.Button(self, text=“Mail”,
command=lambda: controller.show_frame(“Mail”))
button1.pack(side=LEFT, padx=60)
button2.pack(side=LEFT, padx=60)
button3.pack(side=LEFT, padx=60)
button4.pack(side=LEFT, padx=60)

class My_Plnts(tk.Frame):

def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller

My_Plnts.configure(self, background=’#ade5ad’)

label = tk.Label(self, text=“My Plnts”, background=’#ade5ad’, font=TITLE_FONT)
label.pack(side=“top”, anchor=NW, fill=“x”, pady=10)
button = tk.Button(self, text=“Back to Home”,
command=lambda: controller.show_frame(“Home”))
button.pack(side=“top”, anchor=NE)

class Jrnl(tk.Frame):

def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller

Jrnl.configure(self, background=’#ade5ad’)

label = tk.Label(self, text=“Jrnl”, background=’#ade5ad’, font=TITLE_FONT)
label.pack(side=“top”, fill=“x”, pady=10)
button = tk.Button(self, text=“Back to Home”,
command=lambda: controller.show_frame(“Home”))
button.pack(side=“top”, anchor=NE)

class Shop(tk.Frame):

def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller

Shop.configure(self, background=’#ade5ad’)

label = tk.Label(self, text=“Shop”, background=’#ade5ad’, font=TITLE_FONT)
label.pack(side=“top”, fill=“x”, pady=10)

label = tk.Label(self, text=“More at www.gfc.com”, background=’#ade5ad’, font=CREDITS_FONT)
label.pack(side=“bottom”, fill=“x”, pady=10)

button = tk.Button(self, text=“Back to Home”,
command=lambda: controller.show_frame(“Home”))

button1 = tk.Button(self, text=“Teapops”,
command=lambda: controller.show_frame(“Teapops”))
button2 = tk.Button(self, text=“Plants”,
command=lambda: controller.show_frame(“Plants”))
button3 = tk.Button(self, text=“Nail Polish”,
command=lambda: controller.show_frame(“Nail_Polish”))

button.pack(side=“top”, anchor=NE)

button1.pack(side=LEFT, anchor=NW, fill=BOTH, expand=1)
button2.pack(side=LEFT, anchor=NW, fill=BOTH, expand=1)
button3.pack(side=LEFT, anchor=NW, fill=BOTH, expand=1)

“”“
button1.pack(side=TOP, anchor=NW, padx=10, pady=60, expand=NO)
button2.pack(side=TOP, anchor=NW, padx=30, pady=60, expand=NO)
button3.pack(side=TOP, anchor=NW, padx=60, pady=60, expand=NO)
”“”

class Mail(tk.Frame):

def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller

Mail.configure(self, background=’#ade5ad’)

label = tk.Label(self, text=“Mail”, background=’#ade5ad’, font=TITLE_FONT)
label.pack(side=“top”, fill=“x”, pady=10)
button = tk.Button(self, text=“Back to Home”,
command=lambda: controller.show_frame(“Home”))
button.pack(side=“top”, anchor=NE)

if __name__ == “__main__”:
app = App()
app.minsize(300,300)
app.geometry(“800x800”)
app.mainloop()

最佳答案

我构建了以下程序来向您演示 .pack() 方法的工作原理,请随意尝试不同的选项并查看每个选项如何影响输出:

from tkinter import *

root = Tk()
top = Toplevel()
top.withdraw()
var1 = StringVar(root)
var1.set("top")
var2 = StringVar(root)
var2.set("none")
var4 = StringVar(root)
var4.set("center")
var3 = BooleanVar(root)

def command(top, var1, var3, var2):
top.destroy()
top = Toplevel()
top.geometry("500x500")
Label(top, text="Welcome home").pack()
Button(top, text="Button1").pack(side=var1.get(), fill=var2.get(), expand=var3.get(), anchor=var4.get())
Button(top, text="Button2").pack(side=var1.get(), fill=var2.get(), expand=var3.get(), anchor=var4.get())
Button(top, text="Button3").pack(side=var1.get(), fill=var2.get(), expand=var3.get(), anchor=var4.get())
Button(top, text="Button4").pack(side=var1.get(), fill=var2.get(), expand=var3.get(), anchor=var4.get())

option1 = OptionMenu(root, var1, "top", "left", "bottom", "right")
check1 = Checkbutton(root, variable=var3, text="Expand?")
option2 = OptionMenu(root, var2, "none", "x", "y", "both")
option3 = OptionMenu(root, var4, "center", "n", "ne", "e", "se", "s", "sw", "w", "nw")
button1 = Button(root, text="Render", command=lambda:command(top, var1, var3, var2))

option1.pack()
check1.pack()
option2.pack()
option3.pack()
button1.pack()

root.mainloop()

这应该向您展示不同的选项如何影响 .pack() 的结果。

更重要的是,我相信您正在寻找的效果可以使用 .pack(side="left", expand="true", fill="x", anchor="n").

关于python - 我的按钮并排放置在我的主窗口中,但它们出现在中间。我如何让他们更上一层楼?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45685030/

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