RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-505901

kot may's questions

Martin Hope
kot may
Asked: 2024-09-27 03:17:29 +0000 UTC

如何用 GIF 动画结束节目?

  • 5

我在 Tkinter 中使用 Python 3.12 编写了一个程序,但问题是,当我单击“退出”而不是带有动画 GIF 的窗口和用于关闭程序的按钮时,什么也没有发生。

我只能将 GIF 插入主窗口,而不能插入特殊窗口。

如何制作一个带有可运行的 gif 动画的窗口?

代码:

import tkinter as tk
from PIL import Image, ImageTk

def open_second_window():
    # Создаем дочернее окно
    second_window = tk.Toplevel(root)
    second_window.title("Второе окно")
    second_window.state('zoomed')

    # Загружаем изображение 
    image_path = "1.jpg"
    image = Image.open(image_path)
    photo = ImageTk.PhotoImage(image)

    # Создаем метку для отображения изображения
    label = tk.Label(second_window, image=photo)
    label.image = photo  # Сохраняем ссылку на изображение
    label.pack(fill=tk.BOTH, expand=True)
    label.place(x=770, y=0)

    # Создаем кнопку 
    button = tk.Button(second_window,height=4, width=12, font='Times 31', text="ОДИН", command=lambda: open_four_window(second_window))

    button.place(x=308, y=82, anchor='ne')
    button1 = tk.Button(second_window,height=4, width=12, font='Times 31', wraplength=289, text="ДВА", command=open_five_window)
    button1.place(x=688, y=82, anchor='ne')
    button = tk.Button(second_window,height=4, width=12, font='Times 31', text="ЧЕТЫРЕ", command=open_threee_window)
    button.place(x=308, y=352, anchor='ne')
    button1 = tk.Button(second_window,height=4, width=12, font='Times 31', text="ТРИ", command=open_threetenfive_window)
    button1.place(x=688, y=352, anchor='ne')


    tk.Label(second_window, font='Times 30', text="ТЕКСТ", fg="red").place(x=150, y=30)


    # Устанавливаем режим grab_set()
    third_window.grab_set()
def open_four_window(second_window):
    # Закрываем второе окно
    second_window.destroy()

    # Создаем  дочернее окно
    four_window = tk.Toplevel(root)
    four_window.title("Третье окно")
    four_window.state('zoomed')

    # Загружаем изображение 
    image_path = "2.jpg"
    image = Image.open(image_path)
    photo = ImageTk.PhotoImage(image)

    # Создаем метку для отображения изображения
    label = tk.Label(four_window, image=photo)
    label.image = photo  # Сохраняем ссылку на изображение
    label.pack(fill=tk.BOTH, expand=True)
    label.place(x=0, y=0)


    button = tk.Button(four_window,height=1, width=33, font='Times 31', text="В начало", command=lambda: open_second_window())
    button.place(x=768, y=720, anchor='ne')
    button1 = tk.Button(four_window,height=1, width=33, font='Times 31', text="Выход", command=animation)
    button1.place(x=1536, y=720, anchor='ne')

....

def open_theend_window():
    # Создаем дочернее окно
    theend_window = tk.Toplevel(root)
    theend_window.title("Второе окно")
    theend_window.state('zoomed')

    photo = tkinter.PhotoImage(file = 'road-sign-roadtrip.gif')
    lbl = tkinter.Label(theend_window ,image = photo)
    lbl.image = photo #keeping a reference in this line
    lbl.grid(row=0, column=0)

    # Создаем метку для отображения изображения
    
     # Сохраняем ссылку на изображение



    # Создаем кнопку 
    button = tk.Button(theend_window,height=1, width=33, font='Times 31', text="В начало", command=lambda: open_second_window())
    button.place(x=768, y=720, anchor='ne')
    button1 = tk.Button(theend_window,height=1, width=33, font='Times 31', text="Выход", command=Close)
    button1.place(x=1536, y=720, anchor='ne')



    # Устанавливаем режим grab_set()
    third_window.grab_set()






5# Создаем главное окно
root = tk.Tk()
root.title("Главное окно")
root.state('zoomed')


# Загружаем изображение 001.jpg
image_path = "40.jpg"
image = Image.open(image_path)
photo = ImageTk.PhotoImage(image)
image.thumbnail((1, 1))

# Создаем метку для отображения изображения
label = tk.Label(root, image=photo)
label.pack(fill=tk.BOTH, expand=True)
label.place(x=-3, y=0)

def Close(): 
    root.destroy() 

# Создаем кнопку "Далее"
button = tk.Button(root,height=1, width=33, font='Times 31', text="Далее", command=lambda: open_second_window())
button.place(x=768, y=720, anchor='ne')
button1 = tk.Button(root,height=1, width=33, font='Times 31', text="Выход", command=Close)
button1.place(x=1536, y=720, anchor='ne')


tk.Label(root, font='Times 30', text="МЕНЮ", fg="red").pack(padx=30, pady=30)
tk.Label(root, font='Times 30 italic', text="ОПИСАНИЕ").place(x=600, y=77)

file = "road-sign-roadtrip.gif"
info = Image.open(file)

frames = info.n_frames  # number of frames

photoimage_objects = []
for i in range(frames):
    obj = tk.PhotoImage(file=file, format=f"gif -index {i}")
    photoimage_objects.append(obj)


def animation(current_frame=0):
    global loop
    image = photoimage_objects[current_frame]

    gif_label.configure(image=image)
    current_frame = current_frame + 1

    if current_frame == frames:
        current_frame = 0

    loop = root.after(50, lambda: animation(current_frame))

gif_label = tk.Label(root, image="")
gif_label.pack()

# Запускаем главный цикл
root.mainloop()
python
  • 1 个回答
  • 35 Views
Martin Hope
kot may
Asked: 2024-07-23 22:42:05 +0000 UTC

我无法插入背景图像、使其全屏显示并关闭以前的窗口

  • 6

我正在编写一个程序,该程序将根据某种算法工作(也就是说,当您单击某些按钮时,可能会出现另一个窗口,或者会出现一个包含结果的最终窗口,并且当您单击时从 Toplevel(opennewwindow(1))按钮,应该会出现另一个窗口)我编写了该程序的主要代码,但我无法在所有窗口上插入背景图像,也无法为所有窗口设置全屏模式并关闭以前的窗口。这是代码(python 版本 - 3.10)

from tkinter import * #Выводит библиотеку окон
from tkinter.ttk import * #Выводит библиотеку дополнительных окон

master = Tk()#Названии опции
master.geometry("1920x1080")#Размер окна
master.title("Окно")#Названия окна\

bg=PhotoImage("C:/Users/User/AppData/Local/Programs/Python/Python310/draw.jpg") 


def openNewWindow():#Опция нового окна
        newWindow = Toplevel(master)##Названии опции нового окна
        newWindow.title("Второе окно")#Названия окна нового окна
        newWindow.geometry('1920x1080')#Размер окна нового окна
        Label(newWindow, #Начало титульного вопроса нового окна
            text ="Вопрос №2").pack()# Конец  титульного вопроса нового окна

        btn = Button(newWindow,#Начало кнопки нового окна
                         text ="Да",#середина кнопки нового окна
                         command = openNewWindow)#Конец кнопки нового окна
        btn.pack(pady = 10)#Оформление кнопки нового окна
        btn = Button(newWindow,##Начало второй кнопки нового окна
                         text ="нет",#середина второй кнопки нового окна
                         command = openNewWindow1)#Конец второй кнопки нового окна
        btn.pack(pady = 10)#Оформление второй кнопки нового окна
        master.withdraw()
        openNewWindow1.withdraw()

def openNewWindow1():##Опция нового dd второго окна
        newWindow1 = Toplevel(master)###Названии опции нового окна
        newWindow1.title("Третье окно")##Названия окна нового окна
        newWindow1.geometry('1920x1080')##Размер окна нового окна
        Label(newWindow1, ##Начало титульного вопроса нового окна
            text ="Вопрос №3").pack()## Конец  титульного вопроса нового окна

        btn = Button(newWindow1,##Начало кнопки нового окна
                         text ="Да",##середина кнопки нового окна
                         command = openNewWindow)##середина кнопки нового окна#Конец кнопки нового окна
        btn.pack(pady = 10)##Оформление кнопки нового окна
        btn = Button(newWindow1,###Начало второй кнопки нового окна
                         text ="нет",##середина второй кнопки нового окна
                         command = openNewWindow2)##Конец второй кнопки нового окна
        btn.pack(pady = 10)##Оформление второй кнопки нового окна
        master.withdraw()
        openNewWindow.withdraw()

def openNewWindow2():##Опция нового dd третьего окна
        newWindow2 = Toplevel(master)###Названии опции нового третьего  окна
        newWindow2.title("Третье окно")##Названия окна нового третьего  окна
        newWindow2.geometry('1920x1080')##Размер окна нового третьего  окна
        Label(newWindow2, ##Начало титульного вопроса нового третьего  окна
            text ="Вопрос №4").pack()## Конец  титульного вопроса нового третьего  окна

        btn = Button(newWindow2,##Начало кнопки нового третьего  окна
                         text ="Да",##середина кнопки нового третьего  окна
                         command = openNewWindow)##середина кнопки третьего  нового окна#Конец кнопки нового третьего  окна
        btn.pack(pady = 10)##Оформление кнопки нового третьего  окна
        btn = Button(newWindow2,###Начало второй кнопки нового третьего  окна
                         text ="нет",##середина второй кнопки нового третьего  окна
                         command = openNewWindow1)##Конец второй кнопки нового третьего  окна
        btn.pack(pady = 10)##Оформление второй кнопки нового третьего   окна
        master.withdraw()
        openNewWindow.withdraw()




background = PhotoImage()
label = Label(master, image=bg, #Вопрос основного окна(начало)
              text ="Вопрос №1")##Вопрос основного окна(середина)
label.place(x=0, y=0)
label.pack(pady = 10)##Оформление основного окна(оформление)


btn = Button(master, ##Кнопка основного окна(начало)
                text ="Да", ##Кнопка основного окна(середина)
                command = openNewWindow)##Кнопка основного окна(середина)
btn.pack(pady = 10)##Оформление основного окна(начало)

btn = Button(master, ##Кнопка основного окна(начало)
                text ="Нет", ##Кнопка основного окна(середина)
                command = openNewWindow1)##Кнопка основного окна(середина)
btn.pack(pady = 10)##Оформление основного окна(начало)




btn.pack(pady = 10)#
mainloop()#Конец цикла и запуск команды

当我单击程序中的按钮时,出现此错误,并且在第一个窗口中文本消失并且背景图像不出现:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
  File "C:/Users/User/AppData/Local/Programs/Python/Python310/sffsfsf.py", line 27, in openNewWindow
    openNewWindow1.withdraw()
AttributeError: 'function' object has no attribute 'withdraw'
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
  File "C:/Users/User/AppData/Local/Programs/Python/Python310/sffsfsf.py", line 27, in openNewWindow
    openNewWindow1.withdraw()
AttributeError: 'function' object has no attribute 'withdraw'
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
  File "C:/Users/User/AppData/Local/Programs/Python/Python310/sffsfsf.py", line 45, in openNewWindow1
    openNewWindow.withdraw()
AttributeError: 'function' object has no attribute 'withdraw'
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
  File "C:/Users/User/AppData/Local/Programs/Python/Python310/sffsfsf.py", line 63, in openNewWindow2
    openNewWindow.withdraw()
AttributeError: 'function' object has no attribute 'withdraw'
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
  File "C:/Users/User/AppData/Local/Programs/Python/Python310/sffsfsf.py", line 45, in openNewWindow1
    openNewWindow.withdraw()
AttributeError: 'function' object has no attribute 'withdraw'
python
  • 1 个回答
  • 45 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5