[英]How to keep track if a button has been clicked
我正在做一個記憶游戲,我不知道如何跟蹤是否單擊了一個按鈕。 如果兩個圖像在單擊時不匹配,我希望這些圖塊更改回默認圖像,但如果它們匹配則保留為新圖像。
import tkinter as tk
from tkinter import ttk
from tkinter import *
from PIL import Image, ImageTk
import random
import tkinter.font
from tkinter import messagebox
import time
class MemoryBricks:
def __init__(self, master):
frame=Frame(master)
frame.grid()
master.title("Let's play Kitten Memory!")
master.iconbitmap(r"default.ico")
self.button1=ttk.Button(root)
self.button1.grid(row = 0, column = 0)
self.photo1 = tk.PhotoImage(file="defaultPic.png")
self.button1.config(image=self.photo1, command=lambda: showImage(1))
self.button2=ttk.Button(root)
self.button2.grid(row=0, column=1)
self.photo2 = tk.PhotoImage(file="defaultPic.png")
self.button2.config(image=self.photo2, command=lambda: showImage(2))
self.button3=ttk.Button(root)
self.button3.grid(row=0, column=2)
self.photo3 = tk.PhotoImage(file="defaultPic.png")
self.button3.config(image=self.photo3, command=lambda: showImage(3))
self.button4=ttk.Button(root)
self.button4.grid(row=1, column=0)
self.photo4 = tk.PhotoImage(file="defaultPic.png")
self.button4.config(image=self.photo4, command=lambda: showImage(4))
self.button5=ttk.Button(root)
self.button5.grid(row=1, column=1)
self.photo5 = tk.PhotoImage(file="defaultPic.png")
self.button5.config(image=self.photo5, command=lambda: showImage(5))
self.button6=ttk.Button(root)
self.button6.grid(row=1, column=2)
self.photo6 = tk.PhotoImage(file="defaultPic.png")
self.button6.config(image=self.photo6, command=lambda: showImage(6))
class showImage(MemoryBricks):
def __init__(self, master):
if master == 1:
load1 = Image.open('Kittens1.GIF')
load1Size = load1.resize((145,145))
render1 = ImageTk.PhotoImage (load1Size)
img1 = Label(image=render1)
img1.image = render1
img1.grid(row = 0, column = 0)
if master == 2:
load1 = Image.open('Kittens2.GIF')
load1Size = load1.resize((145,145))
render1 = ImageTk.PhotoImage (load1Size)
img1 = Label(image=render1)
img1.image = render1
img1.grid(row=0, column=1)
if master == 3:
load1 = Image.open('Kittens3.GIF')
load1Size = load1.resize((145,145))
render1 = ImageTk.PhotoImage (load1Size)
img1 = Label(image=render1)
img1.image = render1
img1.grid(row=0, column=2)
if master == 4:
load1 = Image.open('Kittens1.GIF')
load1Size = load1.resize((145,145))
render1 = ImageTk.PhotoImage (load1Size)
img1 = Label(image=render1)
img1.image = render1
img1.grid(row=1, column=0)
if master == 5:
load1 = Image.open('Kittens2.GIF')
load1Size = load1.resize((145,145))
render1 = ImageTk.PhotoImage (load1Size)
img1 = Label(image=render1)
img1.image = render1
img1.grid(row=1, column=1)
if master == 6:
load1 = Image.open('Kittens3.GIF')
load1Size = load1.resize((145,145))
render1 = ImageTk.PhotoImage (load1Size)
img1 = Label(image=render1)
img1.image = render1
img1.grid(row=1, column=2)
#skapar fönstret
root=Tk()
start_time = time.time()
#root blir master
mem=MemoryBricks(root)
root.mainloop()
elapsed_time = time.time() - start_time
print("Your time is", elapsed_time)
我相信我可能必須做一個新的類或一個函數。 還是有人對如何輕松實現此操作有任何建議?
您可以有一個輔助變量,該變量將充當標志。
例如,將其定義為self.flag = False
。 單擊按鈕時,在True中更改變量的值( self.flag = True
),這是您可以跟蹤是否按下按鈕的方式
例如,您要跟蹤是否單擊了button1:
class MemoryBricks:
def __init__(self, master):
# Define "flag variable" for button1
self.flag_btn1 = False
在單擊button1時將要執行的功能(或代碼的一部分)中,更改標志的狀態:
class showImage(MemoryBricks):
def __init__(self, master):
if master == 1:
# Change state of the flag
self.flag_btn1 = True
load1 = Image.open('Kittens1.GIF')
load1Size = load1.resize((145, 145))
render1 = ImageTk.PhotoImage(load1Size)
img1 = Label(image=render1)
img1.image = render1
img1.grid(row=0, column=0)
現在您可以檢查是否單擊了button1:
例如,根據某些信號/動作:
if self.flag_btn1: # True
print("button1 was clicked")
else: # False
print("button1 wasn't clicked")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.