【问题标题】:How to make images appear after pushing buttons?按下按钮后如何使图像出现?
【发布时间】:2019-04-28 22:18:43
【问题描述】:

我正在尝试制作一个记忆游戏,我希望在我按下按钮后出现图像。就像现在的代码一样,图像会立即出现。我确信有一种简单的方法可以使图像在按下时看起来好像它们在按钮“后面”,但由于我是这方面的初学者,所以我无法让它工作。有没有人可以给我一些建议?

from tkinter import *
from PIL import Image, ImageTk

root=Tk()

topFrame=Frame(root)
topFrame.pack()
bottomFrame=Frame(root)
bottomFrame.pack(side=BOTTOM)

def showImage(kitten):
        if kitten == 1:
                load1 = Image.open('Kittens1.GIF')
                render1 = ImageTk.PhotoImage (load1)

                img1 = Label(image=render1)
                img1.image = render1
                img1.pack()

        if kitten == 2:
                load1 = Image.open('Kittens2.GIF')
                render1 = ImageTk.PhotoImage (load1)

                img1 = Label(image=render1)
                img1.image = render1
                img1.pack()        

def kitten(button):
        if button == 1:
                picture = showImage(1)
                return picture

        if button == 2:
                picture = showImage(2)
                return picture

        if button == 3:
                picture = showImage(3)
                return picture
        if button == 4:
                picture = showImage(4)
                return picture

        if button == 5:
                picture = showImage(5)
                return picture       

        if button == 6:
                picture = showImage(6)
                return picture       

number1 = 1
number2 = 2
number3 = 3
number4 = 4
number5 = 5
number6 = 6


button1= Button(topFrame, text="button1", fg="red", command=kitten(number1))
button2= Button(topFrame, text="button2", fg="blue", command=kitten(number2))
button3= Button(topFrame, text="button3", fg="green", command=kitten(number3))
button4= Button(bottomFrame, text="button4", fg="purple", command=kitten(number4))
button5= Button(bottomFrame, text="button5", fg="orange", command=kitten(number5))
button6= Button(bottomFrame, text="button6", fg="yellow", command=kitten(number6))

#packar dem för att visa dem. För att få dem efter varandra på en rad, skriv side=LEFT. annars packas de bara uppe på varandra.
button1.pack(side=LEFT)
button2.pack(side=LEFT)
button3.pack(side=LEFT)
button4.pack(side=LEFT)
button5.pack(side=LEFT)
button6.pack(side=LEFT)


root.mainloop()

【问题讨论】:

    标签: python image button tkinter


    【解决方案1】:

    当您创建按钮时,如果您调用该函数,回调函数将立即运行,即以括号结束函数名称:command=kitten(number1)。通常,您只需提供不带括号的函数名称。

    要从按钮调用带有参数的函数,您可以使用lambda,请参见下面的示例:

    button1= Button(topFrame, text="button1", fg="red", 
                    command=lambda: kitten(number1))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 2017-01-25
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      相关资源
      最近更新 更多