首页 > 解决方案 > 有谁知道如何组合这些功能?

问题描述

我想组合 def clicked 和 def clicked2 函数,因为它们是相同的,但我不知道该怎么做。我还没有尝试过,但我想不出办法。

from tkinter import *
import random
window = Tk()
x = round(random.random()) + 1
m = 7 
window.title("NIM-7 spel") 
window.geometry('350x200') 
lbl = Label(window, text="Player " + str(x) + " next")
lbl2 = Label(window, text="Their are " + str(m) + " coins left")
lbl.grid(column=0, row=1) 
lbl2.grid(column=1, row=0)

def clicked(): 
    global x
    global m
    m -= 1
    if m < 1:
        lol = "Player " + str(x) + " won!"
        res = ""
    else: 
        if x == 1: 
            x = 2
        else: 
            x = 1
        lol = "Their are " + str(m) + " coins left"
        res = "Player " + str(x) + " is next"
    lbl.configure(text=res) 
    lbl2.configure(text=lol)
def clicked2(): 
    global x
    global m
    m -= 2
    if m < 1: 
        lol = "Player " + str(x) + " won!"
        res = ""
    else: 
        if x == 1: 
            x = 2
        else: 
            x = 1
        lol = "Their are " + str(m) + " coins left"
        res = "Player " + str(x) + " is next"
    lbl.configure(text=res)
    lbl2.configure(text=lol)

btn1 = Button(window, text="Take 1 coin", command=clicked)
btn2 = Button(window, text="Take 2 coins", command=clicked2)
btn1.grid(column=1, row=1)
btn2.grid(column=2, row=1)
window.mainloop() 

有谁知道该怎么做?

标签: pythontkinter

解决方案


如果您使用 lambda 函数,则可以向 tkinter 按钮添加参数。已经提出了一些相同的问题:

Tkinter 中的函数

如何从“tkinter”python包中调用带有“Button”函数参数的函数?

def clicked(value): 
    global x
    global m
    m -= value
    if m < 1:
        lol = "Player " + str(x) + " won!"
        res = ""
    else: 
        if x == 1: 
            x = 2
        else: 
            x = 1
        lol = "Their are " + str(m) + " coins left"
        res = "Player " + str(x) + " is next"
    lbl.configure(text=res) 
    lbl2.configure(text=lol)

btn1 = Button(window, text="Take 1 coin", command = lambda:clicked(1))
btn2 = Button(window, text="Take 2 coins", command = lambda:clicked(2))

推荐阅读