Tkinter, нажмите кнопку с оператором if для конкретной картинки в метке - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь сделать викторину с 4 случайными картинками (только одна на этикетке).Ниже есть 4 кнопки, которые являются вариантами ответа.Кнопки всегда остаются одинаковыми, просто картинки меняются случайным образом после ответа на правильный вопрос.Таким образом, когда есть изображение, после нажатия правой кнопки изображение должно измениться на другое.Если нажать не ту кнопку, ничего не произойдет.

Пока проблема в том, чтобы ссылаться на картинку, которая в данный момент видится правильно.

Прямо сейчас я пыталсяпосле правильного ответа измените картинку на следующую, потому что я не знал, как вставить случайное изменение.

Спасибо за любую помощь!

from tkinter import *
from random import randint

Fenster = Tk()
Fenster.title('training')
Fenster.geometry('1024x720')

# images
img110 = PhotoImage(file='1.gif')
img120 = PhotoImage(file='2.gif')
img130 = PhotoImage(file='3.gif')
img140 = PhotoImage(file='4.gif')

# Label image
bild=randint(1,4)
if bild==1:
    labelbild = Label(image=img110)
elif bild==2:
    labelbild = Label(image=img120)
elif bild==3:
    labelbild = Label(image=img130)
elif bild==4:
    labelbild = Label(image=img140)
labelbild.place(x=350, y=150)

#actions

def button110Click():
    if  bild==1:
        labelbild.config(image=img120)
    else:
        pass

def button120Click():
    if bild==2:
        labelbild.config(image=img130)
    else:
        pass

def button130lick():
    if bild==3:
        labelbild.config(image=img140)
    else:
        pass

def button140Click():
    if bild==4:
        labelbild.config(image=img110)
    else:
        pass

# Buttons
button110 = Button(master=Fenster, text='108', bg='#D5E88F', command=button110Click)
button110.place(x=350, y=420, width=40, height=40)
button120 = Button(master=Fenster, text='120', bg='#FFCFC9', command=button120Click)
button120.place(x=440, y=420, width=40, height=40)
button130 = Button(master=Fenster, text='128.57', bg='#FBD975', command=button130Click)
button130.place(x=530, y=420, width=40, height=40)
button140 = Button(master=Fenster, text='135', bg='#FBD975', command=button140Click)
button140.place(x=620, y=420, width=40, height=40)

Fenster.mainloop()

1 Ответ

0 голосов
/ 08 июня 2018

Я предлагаю использовать список для хранения изображений и использовать bild в качестве индекса в этом списке.

from random import randint
import tkinter

# number of images
N = 4

# Use a Python 'list comprehension' to build a list of images
images = [ PhotoImage(file='%d.gif') % i for i in range(1,N+1)]

bild = 0

def new_image():
    # Select and display the an image
    global bild
    bild = randint(0,N-1)
    labelbild = label(images[bild])
    labelbild.place(x=350, y=150)

new_image()

# actions
# (I bet there's a parametric way to do this using one function, but I don't know tkinter)

def button110Click():
    if bild == 0:
        new_image()

def button120Click():
    if bild == 1:
        new_image()

def button130Click():
    if bild == 2:
        new_image()

def button140Click():
    if bild == 3:
        new_image()

# The rest is the same as in the OP.

Поскольку у меня нет tkinter, я не смог протестировать полное приложение,поэтому могут быть ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...