首页 > 解决方案 > Python tkinter 帮助 - 访问其他功能的按钮

问题描述

在这段代码中,我制作了 3 个单独的按钮,只有在按下第一个按钮后才能访问其中的两个。出于某种原因,当我运行代码并按下“Place”按钮时,我的“winClicked”和“loseClicked”功能会被访问​​,即使它们在按下赢/输对接之前不应该访问。我需要解决什么问题才能使“winClicked”和“loseClicked”仅在按下按钮时运行?

from tkinter import *
from tkinter import scrolledtext


# Window
window = Tk()
window.geometry("750x500")
window.configure(background='gray')
window.title("Fantasy Betting Log")

# Bank
bank = 100
bankLbl = Label(window, text="Bank: " + str(bank))
bankLbl.place(x=0, y=0)



# Functions
def win(wager, odds):
    if int(odds) > 0:
        return float(wager) * float(odds) / 100
    if int(odds) < 0:
        return float(wager) * 100 / abs(float(odds))

def winClicked(name, wager, odds):
    log.insert(INSERT,'WIN - ' + name + ' won you ' + str(win(wager, odds)))
    log.insert(END, "$ \n")


def loseClicked(name, wager):
    log.insert(INSERT,'LOSS - ' + name + ' lost you ' + str(wager))
    log.insert(END, "$ \n")


counter = 0
def newLiveBet(name, wager, odds):
    global counter
    liveBet = Label(window, text= name + " - Wager: " + wager + ", Odds: " + odds)
    liveBet.place(x=10, y=(300 + (30 * counter)))
    winButton = Button(window, text="Win", width=3, bg="white", fg="green", command=winClicked(name,wager, odds))
    winButton.place(x= 400, y = (300 + (30 * counter)))
    loseButton = Button(window, text="Lose", width=3, bg="white", fg="red", command=loseClicked(name, wager))
    loseButton.place(x= 450, y = (300 + (30 * counter)))
    counter += 1

def placeClicked():
    name = betName.get()
    wager = wagerAmt.get()
    odds = oddsAmt.get()
    betName.delete(0, END)
    wagerAmt.delete(0, END)
    oddsAmt.delete(0, END)
    newLiveBet(name, wager, odds)

#Theres more code here but irrelevant to question

window.mainloop()

标签: pythontkinter

解决方案


因为您设置win为输入文本的值:

win = input("Did you win your bet? (y/n)")

推荐阅读