Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 3.x tkinter按钮文本未更改_Python 3.x_Tkinter - Fatal编程技术网

Python 3.x tkinter按钮文本未更改

Python 3.x tkinter按钮文本未更改,python-3.x,tkinter,Python 3.x,Tkinter,我将tkinter与Python3一起使用。我的按钮应该在单击时更改其文本。它等待用户单击按钮,然后按钮命令方法完成,但文本从未更改。当用户单击按钮时,如何更改按钮的文本 ***编辑 ***显示了一个最小的工作示例 import tkinter as tk import tkinter.simpledialog import random ai_turn = None def gui(): root = tk.Tk() var = tk.BooleanVar(value=Fa

我将tkinter与Python3一起使用。我的按钮应该在单击时更改其文本。它等待用户单击按钮,然后按钮命令方法完成,但文本从未更改。当用户单击按钮时,如何更改按钮的文本

***编辑 ***显示了一个最小的工作示例

import tkinter as tk
import tkinter.simpledialog
import random

ai_turn = None

def gui():
    root = tk.Tk()
    var = tk.BooleanVar(value=False)    
    
    b1 = tk.Button(text=' ', width=15, height=6, command=lambda: action(b1,ai_turn,buttons_available,var))
    b2 = tk.Button(text=' ', width=15, height=6, command=lambda: action(b2,ai_turn,buttons_available,var))
    b3 = tk.Button(text=' ', width=15, height=6, command=lambda: action(b3,ai_turn,buttons_available,var))
    b4 = tk.Button(text=' ', width=15, height=6, command=lambda: action(b4,ai_turn,buttons_available,var))
    b5 = tk.Button(text=' ', width=15, height=6, command=lambda: action(b5,ai_turn,buttons_available,var))
    b6 = tk.Button(text=' ', width=15, height=6, command=lambda: action(b6,ai_turn,buttons_available,var))
    b7 = tk.Button(text=' ', width=15, height=6, command=lambda: action(b7,ai_turn,buttons_available,var))
    b8 = tk.Button(text=' ', width=15, height=6, command=lambda: action(b8,ai_turn,buttons_available,var))
    b9 = tk.Button(text=' ', width=15, height=6, command=lambda: action(b9,ai_turn,buttons_available,var))


    buttons_available = [b1, b2, b3, b4, b5, b6, b7, b8, b9]

    b1.grid(row=0, column=0)
    b2.grid(row=0, column=1)
    b3.grid(row=0, column=2)
    b4.grid(row=1, column=0)
    b5.grid(row=1, column=1)
    b6.grid(row=1, column=2)
    b7.grid(row=2, column=0)
    b8.grid(row=2, column=1)
    b9.grid(row=2, column=2)

    menubar = tk.Menu(root)
    filemenu = tk.Menu(menubar, tearoff=0)
    filemenu.add_command(label='Play', command=lambda: play(buttons_available, root, var))
    filemenu.add_command(label='Exit', command=root.quit)
    menubar.add_cascade(label='File', menu=filemenu)
    root.config(menu=menubar)
    root.geometry("345x303")
    root.title('Go to File > Play to start a game')
    root.mainloop()



def action(buttons, ai_turn, buttons_available, var):
    if ai_turn is not None:
        if ai_turn == True:
            buttons.config(text='X')
            buttons.config(state='disabled')
        elif ai_turn == False:
            buttons.config(text='O')
            buttons.config(state='disabled')
        buttons_available.remove(buttons)
        var.set(True)

def play(buttons_available, root, var):
    turn_count = []
    remaining_boxes = 9

    correct_guess = random.choice([0,1])
    player_guess = tkinter.simpledialog.askinteger('Who will go first?', 'Choose a number (1 or 0)',
    minvalue=0, maxvalue=1)
    if player_guess == correct_guess:
        tk.messagebox.showinfo('Correct!', 'You will move first, but I will be X')
        ai_turn = False
        root.wait_variable(var)
        turn_count = [human_move(remaining_boxes, ai_turn)]
    else:
        tk.messagebox.showinfo('Incorrect: Number was {}'.format(correct_guess),
        'I will go first, and I will be X')
        ai_turn = True
        turn_count = [ai_move(buttons_available, remaining_boxes, ai_turn)]

    while turn_count[0][1] > 0:
        if turn_count[0][0] == False:
            root.wait_variable(var)
            turn_count=human_move(remaining_boxes, ai_turn)
        elif turn_count[0][0] == True:
            turn_count=ai_move(buttons_available, remaining_boxes, ai_turn)


def human_move(remaining_boxes, ai_turn):
    remaining_boxes -= 1
    ai_turn = True
    return ai_turn, remaining_boxes


def ai_move(buttons_available, remaining_boxes, ai_turn):
    if remaining_boxes == 9: #AI moves first and places X in top left corner
        buttons_available[0].config(text='X', state='disabled')
    else:
        pass
    remaining_boxes -= 1
    ai_turn = False
    return ai_turn, remaining_boxes


gui()

我在这个TicTacToe(猜测)中看到的唯一问题是,程序执行从未进入处理按钮配置的代码块。这可能是因为您没有相应地定义
ai\u turn
值。还要注意,在函数
human_move()
中,语句
ai_turn=True
,只有在调用函数时才会执行,我认为您不是。此外,尝试提供一个新的解决方案。