[英]How can I add an image as my background per page in Tkinter?
我想知道如何在 Tkinter 中为每页添加一个图像作为我的背景,当您运行该程序时,我希望在“结帐”页面以及单击“退出”页面时都有一个背景不同的图像背景,我该怎么做? 不可能吗? 如果是,如何在两个页面上添加图像背景?
到目前为止,这是我的代码(不要介意它是否凌乱,它只是我代码的一部分):
import tkinter as tk
from tkinter import *
class IceCream(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 (Checkout, Exit):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(Checkout)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class Checkout(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Checkout", font="times 40 bold")
label.pack(pady=30,padx=10)
label = tk.Label(self, text="Flavours", font="times 20 bold")
label.place(x=15, y=110)
self.sum_total=0
self.total_lbl=Label(self,font=("arial",17,'bold'),text=f'Total: {self.sum_total}')
self.total_lbl.place(x=250,y=440)
size=150
button1 = tk.Button(self, text="Start Again", font="times 15",
command=lambda: controller.show_frame(IceCream))
button1.place(x=20, y=440)
button2 = tk.Button(self, text="Exit", font="times 15",
command=lambda: controller.show_frame(Exit))
button2.place(x=480, y=440)
class Exit(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Thank you, " + '\n' + "Have a Good Day!!!", font="times 50 bold")
label.pack(anchor="c", ipady=180,ipadx=0)
app = IceCream()
app.mainloop()
你可以试试这个
import tkinter as tk
root = tk.Tk()
bgimg = tk.PhotoImage(file="test.png") ## "test.png" is the image of background
bg = tk.Label(root, image=bgimg) ## remember that tkinter only supports .png .gif .bmp
bg.pack()
frame = tk.Frame(root) ## this is the container for your widgets
frame.place(x=0, y=0)
tk.Button(frame, text="Button").pack()
root.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.