RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1588097
Accepted
kot may
kot may
Asked:2024-07-23 22:42:05 +0000 UTC2024-07-23 22:42:05 +0000 UTC 2024-07-23 22:42:05 +0000 UTC

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

  • 772

我正在编写一个程序,该程序将根据某种算法工作(也就是说,当您单击某些按钮时,可能会出现另一个窗口,或者会出现一个包含结果的最终窗口,并且当您单击时从 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 1 个回答
  • 45 Views

1 个回答

  • Voted
  1. Best Answer
    Fox Fox
    2024-07-24T00:24:54Z2024-07-24T00:24:54Z

    您的代码的问题 - 对不起,是完全缺乏对至少一些用于创建每本教科书中描述的最简单界面的技术的遵守。我什至没有尝试修复此代码。完全重写它会更快。基本概念存在严重问题,即:

    • 简单地将图像作为背景图像放入表单中是行不通的;不会像其他语言那样自动调整大小。最大化的窗口会自动阻止任何图像的正常放置。这将需要复杂的编程。
    • 您可以关闭以前的窗口(例如:second_window.destroy()),但无法关闭主窗口。在这种情况下根本没有必要 - 请参阅用法grab_set()。
    • 窗口的全屏模式设置如下,例如:third_window.state('zoomed')。
    • 子窗口必须是主窗口的子窗口,但不能互为子窗口。这是由选项提供的:tk.Toplevel(root)。只有这样,下一个子窗口才能删除前一个子窗口,即启动它的子窗口。

    我为您提供一个原始的、一所学校、一个培训、一个演示应用程序,专门针对您的问题编写。它的任务不是高度智能地执行高度智能的代码,而是演示学校级别的最简单图形界面编程的基本概念。执行代码时,将生成一个带有图像和按钮的最大化主窗口以及两个最大化子窗口(在第二个窗口中带有图像和按钮以创建第三个窗口)。当第三个窗口加载时,第二个窗口将关闭。 001.jpg、002.jpg、003.jpg 必须放置在脚本所在的目录中才能正常工作。

    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')
    
        # Загружаем изображение 002.jpg
        image_path = "002.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)
    
        # Создаем кнопку "Далее"
        button = tk.Button(second_window, text="Далее", command=lambda: open_third_window(second_window))
        button.place(relx=1.0, rely=0.0, anchor='ne')
    
        # Устанавливаем режим grab_set()
        second_window.grab_set()
    
    def open_third_window(second_window):
        # Закрываем второе окно
        second_window.destroy()
    
        # Создаем третье дочернее окно
        third_window = tk.Toplevel(root)
        third_window.title("Третье окно")
        third_window.state('zoomed')
    
        # Загружаем изображение 003.jpg
        image_path = "003.jpg"
        image = Image.open(image_path)
        photo = ImageTk.PhotoImage(image)
    
        # Создаем метку для отображения изображения
        label = tk.Label(third_window, image=photo)
        label.image = photo  # Сохраняем ссылку на изображение
        label.pack(fill=tk.BOTH, expand=True)
    
        # Устанавливаем режим grab_set()
        third_window.grab_set()
    
    # Создаем главное окно
    root = tk.Tk()
    root.title("Главное окно")
    root.state('zoomed')
    
    # Загружаем изображение 001.jpg
    image_path = "001.jpg"
    image = Image.open(image_path)
    photo = ImageTk.PhotoImage(image)
    
    # Создаем метку для отображения изображения
    label = tk.Label(root, image=photo)
    label.pack(fill=tk.BOTH, expand=True)
    
    # Создаем кнопку "Далее"
    button = tk.Button(root, text="Далее", command=lambda: open_second_window())
    button.place(relx=1.0, rely=0.0, anchor='ne')
    
    # Запускаем главный цикл
    root.mainloop()
    
    • 0

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

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