所以我想让这个图像在显示此类时作为背景加载,但是,我的程序只运行了,没有图像显示。我是python和编码领域的新手,所以我可能在做容易修复的错误,是的,谢谢! (仅在某种情况下,我正在做一个记忆游戏,如果需要更多代码,请提出要求!)
import tkinter as tk # imports tkinter as tk
from tkinter import font as tkfont # imports font as tkfont
import random
import string
import sys
import time
import pygame
class SampleApp(tk.Tk): # class - Basically my Main hub
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.geometry("1024x576+155+60")
self.title("Memory Mania")
self.title_font = tkfont.Font(family='verdana', size=45, 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 (Login, MainMenu, Tutorial, Tutorial2, Difficulty, Settings,
EasyDifficulty, MediumDifficulty, HardDifficulty, InsaneDifficulty,=
EnterCharacterScreen, CorrectScreen, IncorrectScreen, Level2,
WinGameScreen):
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("Login")
def show_frame(self, page_name):
frame = self.frames[page_name]
frame.tkraise()
class Login(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent, bg="#2699C3")
self.controller = controller
background_image = tk.PhotoImage("giphy.gif")
background_label = tk.Label(parent, image=background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
background_label.image = background_image
答案 0 :(得分:-1)
您正在尝试在后台使用gif
,但是tkinter
在gif
上效果不佳,因此您必须自己驱动动画。动画gif由单个文件中的多个帧组成。 Tk
加载第一帧,但是您可以在创建图像时通过传递索引参数来指定不同的帧。例如:
frame2 = PhotoImage(file="giphy.gif", format="gif -index 2")
如果将所有帧加载到单独的PhotoImage
中,然后使用计时器事件切换显示的帧(label.configure(image=nextframe)
)。计时器上的延迟使您可以控制动画速度。除了超出帧数后无法创建帧,没有提供任何其他信息来提供图像中的帧数。
有关官方建议,请参见photo Tk手册页。