Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何更改每个页面的背景图像_Python 3.x_Tkinter - Fatal编程技术网

Python 3.x 如何更改每个页面的背景图像

Python 3.x 如何更改每个页面的背景图像,python-3.x,tkinter,Python 3.x,Tkinter,是的,我确实知道如何配置背景图像,但是在这种情况下,我不知道引用什么作为小部件的父级,因为当我使用self时没有显示任何内容 关于代码示例,我将使用Bryan Oakley切换框架代码中的锅炉板: import tkinter as tk from tkinter import font as tkfont class SampleApp(tk.Tk): def __init__(self, *args, **kwargs): t

是的,我确实知道如何配置背景图像,但是在这种情况下,我不知道引用什么作为小部件的父级,因为当我使用self时没有显示任何内容

关于代码示例,我将使用Bryan Oakley切换框架代码中的锅炉板:

import tkinter as tk                
from tkinter import font  as tkfont 


class SampleApp(tk.Tk):

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

        self.title_font = tkfont.Font(family='Helvetica', size=18, weight="bold", slant="italic")

        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 (StartPage, PageOne):
            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("StartPage")

    def show_frame(self, page_name):
        frame = self.frames[page_name]
        frame.tkraise()


class StartPage(tk.Frame):

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

        **### Here for example this does nto do anything to the window**

        self.background_image= tk.PhotoImage("image_path")
        self.background_label = tk.Label(self, image=self.background_image)
        self.background_label.place(x=0, y=0, relwidth=1, relheight=1)
        self.background_label.image = self.background_image


class PageOne(tk.Frame):

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


if __name__ == "__main__":
    app = SampleApp()
    app.mainloop()

提前感谢您的帮助

我刚刚注意到你的PhotoImage语法也是错误的。你可以把它读出来

应该是:

self.background_image= tk.PhotoImage(file="image_path")

另外添加
self.background\u label.img=self.background\u image
,然后您就都设置好了。

我刚才注意到您的PhotoImage语法也是错误的。你可以把它读出来

应该是:

self.background_image= tk.PhotoImage(file="image_path")

同时添加
self.background\u label.img=self.background\u image
,然后您就都设置好了。

,relwidth=1,relheight=1
?那太小了。。。。除此之外。。。这些是局部变量,当您离开
\uuuuu init\uuuuu
时,它们将立即消失。。。也许你需要使用
self.background\u标签
让他们多呆一会儿?如果我是一个python解释器,我可能会销毁这些变量——它们不再需要了。我从另一篇文章中提取了这些代码,但尽管仍然没有图像出现,但您需要保留对图像的引用。在您的位置后添加背景\u label.img=背景\u图像method@HenryYik我也试过了还是没有image@PatrickArtner:1的
relwidth
不小。相对宽度介于0和1之间,因此1实际上意味着它与容器一样宽。
,relwidth=1,relheight=1
?那太小了。。。。除此之外。。。这些是局部变量,当您离开
\uuuuu init\uuuuu
时,它们将立即消失。。。也许你需要使用
self.background\u标签
让他们多呆一会儿?如果我是一个python解释器,我可能会销毁这些变量——它们不再需要了。我从另一篇文章中提取了这些代码,但尽管仍然没有图像出现,但您需要保留对图像的引用。在您的位置后添加背景\u label.img=背景\u图像method@HenryYik我也试过了还是没有image@PatrickArtner:1的
relwidth
不小。相对宽度介于0和1之间,所以一个实际上意味着它和它的容器一样宽。啊,基本上我缺少的是自我参考,我只是忘记了文件参数,因为我从我的主应用程序中提取它只是为了给这个问题做一个样本。啊,基本上我缺少的是自我参考,我只是忘记了文件参数,因为我从我的主应用程序中提取它应用程序只是为这个问题制作一个示例