Dec-30-2019, 05:02 AM
In the code below I have images of 3 dice (1,2,3) randomly selected and I have the on_click method in place to change the background to red for that die whenever the button for that die is clicked. However, I also want to print the value of that die when it is clicked. For example if 2 is clicked I want to print 2. What is happening when I click on one die it prints the value of all 3 dice randomly selected. So if the 3 random dice selected were 2,3,1 and I click on 2 it prints [[2], [3], [1]] instead of just 2. What do I need to change in my on_click method to fix this?
import random from tkinter import * from PIL import ImageTk, Image import tkinter as tk from tkinter import messagebox from tkinter import simpledialog from tkinter.messagebox import showinfo root = Tk() def on_click(event): event.widget.config(bg='red') buttons = [btn1, btn2, btn3] diceclicked = [] for b in buttons: diceclicked.append([value for (key, value) in r.items() if b.cget('image') == key]) print(diceclicked) global dice1 dice1 = ImageTk.PhotoImage(Image.open("C:\\Users\\Dan\\Desktop\\Alea_1.png")) global dice2 dice2 = ImageTk.PhotoImage(Image.open("C:\\Users\\Dan\\Desktop\\Alea_2.png")) global dice3 dice3 = ImageTk.PhotoImage(Image.open("C:\\Users\\Dan\\Desktop\\Alea_3.png")) r = {'pyimage1':1,'pyimage2':2,'pyimage3':3} dice = [dice1,dice2,dice3] rdice = random.choice(dice) rdice2 = random.choice(dice) rdice3 = random.choice(dice) btn1 = Button(root, image=rdice) btn1.pack() btn1.bind('<Button-1>', on_click) btn2 = Button(root,image=rdice2) btn2.pack() btn2.bind('<Button-1>', on_click) btn3 = Button(root,image=rdice3) btn3.pack() btn3.bind('<Button-1>',on_click) root.mainloop()