Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter帮助-访问其他函数的按钮_Python_Tkinter - Fatal编程技术网

Python tkinter帮助-访问其他函数的按钮

Python tkinter帮助-访问其他函数的按钮,python,tkinter,Python,Tkinter,在这段代码中,我有3个单独的按钮,只有在按下第一个按钮后才能访问两个按钮。出于某种原因,当我运行代码并按下“Place”按钮时,我的“winClicked”和“loseClicked”功能会被访问,即使它们在按下win/lose对接之前不应该被访问。我需要修复什么,以便“winClicked”和“loseClicked”仅在按下按钮时运行 from tkinter import * from tkinter import scrolledtext # Window window = Tk()

在这段代码中,我有3个单独的按钮,只有在按下第一个按钮后才能访问两个按钮。出于某种原因,当我运行代码并按下“Place”按钮时,我的“winClicked”和“loseClicked”功能会被访问,即使它们在按下win/lose对接之前不应该被访问。我需要修复什么,以便“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()
从tkinter导入*
从tkinter导入滚动文本
#窗口
window=Tk()
窗几何(“750x500”)
window.configure(background='gray')
窗口标题(“幻想博彩日志”)
#银行
银行=100
bankLbl=标签(窗口,text=“银行:”+str(银行))
库位(x=0,y=0)
#功能
def赢(赌注、赔率):
如果int(赔率)>0:
回报浮动(下注)*浮动(赔率)/100
如果int(赔率)<0:
回报浮动(下注)*100/绝对值(浮动(赔率))
def winClicked(姓名、赌注、赔率):
log.insert(insert,'WIN-'+name+'won you'+str(WIN(下注,赔率)))
log.insert(结束,$\n)
def(姓名、赌注):
log.insert(insert,'LOSS-'+name+'lost your'+str(下注))
log.insert(结束,$\n)
计数器=0
def newLiveBet(名称、赌注、赔率):
全局计数器
liveBet=标签(窗口,文本=名称+”-下注:“+下注+”,赔率:“+赔率)
liveBet.place(x=10,y=(300+(30*计数器)))
winButton=Button(窗口,text=“Win”,width=3,bg=“white”,fg=“green”,命令=winClicked(姓名,赌注,赔率))
放置(x=400,y=(300+(30*计数器)))
loseButton=按钮(窗口,text=“Lose”,width=3,bg=“white”,fg=“red”,command=loseClicked(姓名,下注))
loseButton.place(x=450,y=(300+(30*计数器)))
计数器+=1
def placeClicked():
name=betName.get()
下注
赔率=oddsAmt.get()
betName.delete(0,结束)
删除(0,结束)
oddsAmt.delete(0,结束)
newLiveBet(姓名、赌注、赔率)
#这里有更多的代码,但与问题无关
window.mainloop()

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

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

你在这一行赢了

    win = input("Did you win your bet? (y/n)")
当你叫它

    bank += win(wager, odds)
它使用前面定义的字符串
win
,它是一个字符串(y,n),因此不能作为函数调用。
您应该使用不同的变量名。

欢迎使用堆栈溢出!请始终发布完整的错误消息和完整的回溯。您有一个名为
win
的函数和变量。非常感谢!我不得不稍微改变一下我的问题。你现在怎么想?这是一个完全不同的错误,永远不要编辑一个完整的问题,因为其他用户无法跟踪问题和答案。发布另一个帖子。哦,好的。抱歉,这还是个新鲜事