微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Tkinter - 用户单击按钮后无法显示图像

如何解决Tkinter - 用户单击按钮后无法显示图像

所以我正在尝试制作一个石头剪刀布游戏。到目前为止一切正常。但是当我试图让它在玩家选择岩石时包含一块岩石的图像,当玩家选择剪刀时包含剪刀的图像...... - 我就是想不通。 我是编程和 Python 的新手,所以如果我没有正确地提出问题或没有格式化代码或其他东西,我很抱歉。希望有人能帮忙。如果您需要了解更多信息,请告诉我。

from tkinter import *
import random


# Dictionaries and vars
outcomes = {
    "steen": {"steen": 1,"papier": 0,"schaar": 2},"papier": {"steen": 2,"papier": 1,"schaar": 0},"schaar": {"steen": 0,"papier": 2,"schaar": 1}
}

comp_score = 0
player_score = 0


# Main Screen
master = Tk()
master.title("RPS")


# Functions
def converted_outcome(number):
    if number == 1:
        return "steen"
    elif number == 2:
        return "papier"
    elif number == 3:
        return "schaar"


def outcome_handler(user_choice):
    print(user_choice)
    global comp_score
    global player_score
    random_number = random.randint(1,3)
    computer_choice = converted_outcome(random_number)
    outcome = outcomes[user_choice][computer_choice]
    player_choice_label.config(fg="red",text="speler keuze: " + str(user_choice))
    computer_choice_label.config(fg="green",text="computer keuze : " + str(computer_choice))
    if outcome == 2:
        player_score = player_score + 2
        player_score_label.config(text="speler: " + str(player_score))
        outcome_label.config(fg="blue",text="uitkomst : speler heeft gewonnen")
    elif outcome == 0:
        comp_score = comp_score + 2
        computer_score_label.config(text="Computer : " + str(comp_score))
        outcome_label.config(fg="blue",text="uitkomst : computer heeft gewonnen")
    elif outcome == 1:
        player_score = player_score + 1
        comp_score = comp_score + 1
        player_score_label.config(text="Speler: " + str(player_score))
        computer_score_label.config(text="Computer : " + str(comp_score))
        outcome_label.config(fg="blue",text="uitkomst : gelijkspel")


steen = PhotoImage(file='steen.png')
papier = PhotoImage(file='papier.png')
schaar = PhotoImage(file='scissors.png')


def images(image,master):
    photo = master.PhotoImage(file=image)
    photo.pack()

# Labels
Label(master,text="steen,papier,schaar",font=("Calibri",14)).grid(row=0,sticky=N,pady=10,padx=200)
Label(master,text="selecteer een optie",12)).grid(row=1,sticky=N)
player_score_label = Label(master,text="speler: 0",12))
player_score_label.grid(row=2,sticky=W)
computer_score_label = Label(master,text="Computer : 0",12))
computer_score_label.grid(row=2,sticky=E)
player_choice_label = Label(master,12))
player_choice_label.grid(row=3,sticky=W)
computer_choice_label = Label(master,12))
computer_choice_label.grid(row=3,sticky=E)
outcome_label = Label(master,12))
outcome_label.grid(row=3,sticky=N)

# Buttons
Button(master,text="steen",width=15,command=lambda *args: [outcome_handler("steen"),images("steen.png",master)]).grid(row=4,sticky=W,padx=5,pady=5)
Button(master,text="papier",command=lambda: outcome_handler("papier") and images()).grid(row=4,text="schaar",command=lambda: outcome_handler("schaar") and images()).grid(row=4,sticky=E,pady=5)
# Dummy Label
Label(master).grid(row=5)

master.mainloop()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。