如何在启动画面中插入图片?

时间:2018-06-29 17:44:42

标签: python tkinter

我只想知道如何在启动画面中插入图片?

from tkinter import *


#splash screen

class SplashScreen(Frame):
    def __init__(self, master=None, width=0.8, height=0.6, useFactor=True):
        Frame.__init__(self, master)
        self.pack(side=TOP, fill=BOTH, expand=YES)

        # get screen width and height

        ws = self.master.winfo_screenwidth()
        hs = self.master.winfo_screenheight()
        w = (useFactor and ws * width) or width
        h = (useFactor and ws * height) or height
        # calculate position x, y
        x = (ws / 2) - (w / 2)
        y = (hs / 2) - (h / 2)
        self.master.geometry('%dx%d+%d+%d' % (w, h, x, y))
        self.master.overrideredirect(True)
        self.lift()


if __name__ == '__main__':
    root = Tk()
    sp = SplashScreen(root)
    sp.config(bg="#3632ff")


    m = Label(sp, text="MH60 NAVIGATION APP")
    m.pack(side=TOP, expand=YES)
    m.config(bg="#3366ff", justify=CENTER, font=("calibri", 29))

    Button(sp, text="PRESS TO START", bg='red', command=root.destroy).pack(side=BOTTOM, fill=X)
    root.mainloop()

3 个答案:

答案 0 :(得分:1)

只需将一些带有图片的小部件添加到您的SplashScreen实例中。例如,假设您的初始屏幕图像是此.gif

splash.gif image

然后将其添加到代码中(通过Button小部件)如下所示:

from tkinter import *

class SplashScreen(Frame):
    def __init__(self, master=None, width=0.8, height=0.6, useFactor=True):
        Frame.__init__(self, master)
        self.pack(side=TOP, fill=BOTH, expand=YES)

        # Add widget with the splash screen image on it.
        self.img = PhotoImage(file='splash.gif')
        btn = Button(self, image=self.img)
        btn.pack(expand=YES, ipadx=10, ipady=10)

        # get screen width and height
        ws = self.master.winfo_screenwidth()
        hs = self.master.winfo_screenheight()
        w = (useFactor and ws * width) or width
        h = (useFactor and ws * height) or height

        # calculate position x, y
        x = (ws / 2) - (w / 2)
        y = (hs / 2) - (h / 2)
        self.master.geometry('%dx%d+%d+%d' % (w, h, x, y))
        self.master.overrideredirect(True)

        self.lift()


if __name__ == '__main__':
    root = Tk()
    sp = SplashScreen(root)
    sp.config(bg="#3632ff")

    m = Label(sp, text="MH60 NAVIGATION APP")
    m.pack(side=TOP, expand=YES)
    m.config(bg="#3366ff", justify=CENTER, font=("calibri", 29))

    Button(sp, text="PRESS TO START", bg='red', command=root.destroy).pack(side=BOTTOM, fill=X)
    root.mainloop()

这是在我的系统上运行的样子:

screenshot with splash screen displayed

答案 1 :(得分:0)

第 1 步:- 导入模块。

第 2 步:- 创建启动画面。

第 3 步:- 设置启动画面的标题和几何图形。

第 4 步:- 插入要显示的照片文件名。

第 5 步:- 创建标签并打包标签。

# Import Module
from tkinter import *

splash = Tk()
splash.title("Welcome")                 # assigning title for splash screen
splash.geometry("800x750+300+100")      # set geometry for splash screen
splash.after(4000, splash.destroy)      # splash screen will destroy after 4 sec 
bg = PhotoImage(file = "file_name.png") # insert file name to be display
lab = Label(splash, image = bg)         # create label
lab.pack()                              # pack the label

splash.mainloop()

答案 2 :(得分:0)

bg = PhotoImage(file = "file_name.png") # insert file name to be display
  1. file_name(photo) 应该存在(保存)在保存上述代码的文件夹中。

  2. 如果代码中没有给出file_name,或者保存上述代码的文件夹中不存在图像,那么运行代码时会出现错误。

错误:-

_tkinter.TclError:无法打开“file_name.png”:没有这样的文件或目录