我无法插入背景图片、进入全屏模式以及关闭之前的窗口

问题描述 投票:0回答:1

我正在编写一个根据算法工作的程序(也就是说,当您单击某些按钮时,会出现另一个窗口或带有结果的最终窗口,并且当您单击按钮时从 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 python-3.x windows debugging tkinter
1个回答
0
投票

无法插入背景图片,无法设为全屏模式

但我未能在所有窗口上插入背景图像,

以及为所有窗口设置全屏模式并关闭以前的窗口

问题可以解决。

你为什么不听@acw1668?

为什么要重复功能?

删除

background = PhotoImage()
您已经拥有
bg=PhotoImage

您缺少

file=
的关键字。应该是
file=draw.jpg
。使用 Tkinter 时。

在标签小部件上,我在

image=bg
函数中添加
compound='bottom'
、f 字符串和
openNewWindow()

HimHer 编写一个函数。

请勿为他和她重复

btn
。使用
btn
代表 ,使用
btn1
代表

最后,删除这个

btn.pack(pady = 10)
。你已经有了。

重写代码片段以减少编码:

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

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

bg=PhotoImage(file="p2.png") 

counter = 0
def openNewWindow():#Опция нового окна
        global counter
        newWindow = Toplevel(master)##Названии опции нового окна
        newWindow.title("Второе окно")#Названия окна нового окна
        newWindow.geometry('320x420')#Размер окна нового окна
        counter += 1
        Label(newWindow, image=bg,
            text =f"Вопрос {counter}", compound='bottom').pack()# Конец  титульного вопроса нового окна

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

 
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)##Оформление основного окна(начало)

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

主窗口截图:

enter image description here

为他或她在新窗口上截图:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.