【问题标题】:Python 3.* Changing window background via button clickPython 3.* 通过单击按钮更改窗口背景
【发布时间】:2014-07-29 22:21:29
【问题描述】:

我已经使用该站点有一段时间了,它对许多 linux 和 python 都非常有帮助,所以谢谢 :) 我已经找到了如何在应用程序窗口上放置背景。我制作了一个按钮,它通向一个功能,该功能与我最初设置背景的功能基本相同。我尝试了几种不同的方法,谷歌搜索了这个。我唯一能做到的就是要么完全空白屏幕,要么保留按钮但仍然空白背景。

这是我目前正在处理的代码

import tkinter

from tkinter import *
from PIL import Image, ImageTk, ImageFilter

window = tkinter.Tk()

myImage2 = Image.open("cubecap.png")
myImage1 = ImageTk.PhotoImage(myImage2)

bglabel = tkinter.Label(window, image=myImage1)
bglabel.place(x=0, y=0, relwidth=1, relheight=1)

btn = tkinter.Button(window, font=('Monospace', 16), text="Click it!")
btn.pack(side=BOTTOM)

def changeBackground():
    myNewImage2 = Image.open("cubecap2.png")
    myNewImage1 = ImageTk.PhotoImage(myNewImage2)

    bglabel.configure(image=myNewImage1)

    btn.configure(text="!it Click")

btn.configure(command=changeBackground)

window.title("Background Changing Buttons")

window.geometry('600x480')

window.wm_iconbitmap('@matrix.xbm')

window.mainloop()

我也尝试过重新放置标签,但它仍然只是使屏幕空白。我对python很陌生,只是一个爱好程序员。

编辑: 我通过在 changeBackground 函数之外设置其他图像变量来解决这个问题

【问题讨论】:

  • 原因是因为一旦函数完成,图像就会被垃圾收集,修复它的其他方法是让你的图像全局化

标签: python image python-3.x tkinter


【解决方案1】:
from Tkinter import *
import Tkinter
from PIL import Image, ImageTk, ImageFilter

window = Tkinter.Tk()

myImage2 = Image.open("'/home/user/logo.png'")
myImage1 = ImageTk.PhotoImage(myImage2)

bglabel = Tkinter.Label(window, image=myImage1)
bglabel.place(x=0, y=0, relwidth=1, relheight=1)


def changeBackground():
    global btn,myNewImage1,bglabel 

    bglabel.config(image=myNewImage1)


myNewImage2 = Image.open("/home/venkat/Peer/logo.ico")

myNewImage1 = ImageTk.PhotoImage(myNewImage2)

btn = Tkinter.Button(window, font=('Monospace', 16), text="Click it!",command=changeBackground)

btn.pack(side=BOTTOM)

window.title("Background Changing Buttons")

window.geometry('600x480')

window.mainloop()

【讨论】:

    猜你喜欢
    • 2018-11-27
    • 1970-01-01
    • 2023-03-15
    • 2016-04-05
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多