![](/img/trans.png)
[英]TKinter: How can I set the window icon of a child window (Toplevel)
[英]Why can't I display an Image in a tkinter Toplevel() window?
我正在嘗試創建一個 python 程序 tkinter ,按下按鈕后,將打開一個新的全屏 tkinter window 包含圖像並播放音頻文件 - 這是我的代碼:
from tkinter import *
from PIL import Image, ImageTk
from playsound import playsound
def play():
window = Toplevel()
window.attributes('-fullscreen', True)
img = ImageTk.PhotoImage(Image.open("pic.png"))
label = Label(window, image=img).pack()
playsound("song.mp3")
buttonWindow = Tk()
b = Button(buttonWindow, text="Press Button", command=play)
b.pack()
(我的圖像和音頻文件都在我的 python 文件的桌面上)
但是,當我運行我的代碼時,當我按下按鈕時,音頻播放但沒有第二個 tkinter window 打開。
我已經嘗試 destroy() buttonWindow 並嘗試了許多不同的方法來在 tkinter window 上包含圖像 - 如果我使用 PhotoImage() 刪除代碼行,則會出現 window(顯然我然后收到語法錯誤說明'img' 未定義)。
我該如何解決這個問題?
謝謝,路易斯
我有類似的問題。 但我解決了這個試錯法。 首先,我不使用枕頭庫並將圖像放入 Label 您應該嘗試定義 Photoimage object NOT IN FUNCTION 示例:它將起作用:
import tkinter as tk
root = tk.Tk()
root.geometry("600x400")
def popUp():
popff = tk.Toplevel(root)
popff.geometry("400x200")
labelImgff = tk.Label(popff, image=imgff, bg="white")
labelImgff.grid(row=0, column=0)
imgff = tk.PhotoImage(file="/home/user/image.png")
btnff = tk.Button(text="startPOP", command=popUp)
btnff.grid(column=0,row=0)
root.mainloop()
您的 playsound() 命令正在阻止執行。 playsound() 命令有一個可選字段 'block',默認為 True。 將此更改為 False 將繼續執行並允許 mainloop() 繼續。
其次,只需調用 label.draw() 將圖像繪制到 TopLevel window。
這是代碼:
from tkinter import *
from PIL import Image, ImageTk
from playsound import playsound
def play():
window = Toplevel()
window.attributes('-fullscreen', True)
img = ImageTk.PhotoImage(Image.open("pic.jpeg"))
label = Label(window, image=img).pack()
playsound("song.mp3",block=False)
label.draw()
buttonWindow = Tk()
b = Button(buttonWindow, text="Press Button", command=play)
b.pack()
buttonWindow.mainloop()
干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.