Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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/8/python-3.x/17.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_Python 3.x_Tkinter_Error Handling_Tk - Fatal编程技术网

Python 如何在tkinter中比较按钮“文本”?

Python 如何在tkinter中比较按钮“文本”?,python,python-3.x,tkinter,error-handling,tk,Python,Python 3.x,Tkinter,Error Handling,Tk,我一直在做tic tac toe项目,而在做这个项目的时候,我面临着一个问题,那就是如何通过循环获得tkinter按钮['text']文本值 如果不可能的话,还有其他方法吗 我试着比较一下,但不起作用,我也看了一些文档,但我得到了任何帮助 我会尝试: 返回: 如何更好地获取这些值?要检查按钮,您不能使用字符串和打印-它们只能创建字符串并在屏幕上显示 您必须像这样使用for循环 result = False for btn in all_buttons: if btn['text'] =

我一直在做tic tac toe项目,而在做这个项目的时候,我面临着一个问题,那就是如何通过循环获得tkinter按钮['text']文本值

如果不可能的话,还有其他方法吗

我试着比较一下,但不起作用,我也看了一些文档,但我得到了任何帮助

我会尝试:

返回:


如何更好地获取这些值?

要检查按钮,您不能使用字符串和打印-它们只能创建字符串并在屏幕上显示

您必须像这样使用for循环

result = False

for btn in all_buttons:
    if btn['text'] == ' ':
        result = True
        break # there is no need to check rest

print("There are empty buttons:", result)

有时,代替或可能需要-所有这些都取决于您尝试检查的内容-任何或全部

或者您可以使用任何或全部

您还可以将其与总和一起使用来计数

result = sum(btn['text'] == 'X' for btn in all_buttons)
print("Number of buttons with X:", result)

测试胜利-这更容易。对两者都进行测试。如果没有更多的字段可供选择,且双方均未获胜,则为平局。请将按钮保留在列表btn[0],btn[1]上,然后您可以使用for循环将按钮与x进行比较,稍后再与oIt进行比较,不清楚您要检查什么。条件表达式不正确,很难理解您希望从中得到什么。您能详细说明一下您的代码是如何工作的吗?你在期待什么,到底发生了什么?如果您遇到异常/错误,请发布发生该异常/错误的行以及可以使用。请将您的问题添加到其中,否则我们可能无法提供帮助。如果您使用!=或==则不在中使用。如果self.btn1['text']==self.btn2['text']==x':或如果self.btn1['text']!=self.btn2['text']!=…=:
result = False

for btn in all_buttons:
    if btn['text'] == ' ':
        result = True
        break # there is no need to check rest

print("There are empty buttons:", result)
result = False

for btn in all_buttons:
    result = result or (btn['text'] == ' '):

print("There are empty buttons:", result)
result = any(btn['text'] == ' ' for btn in all_buttons)
print("There are empty buttons:", result)
result = sum(btn['text'] == 'X' for btn in all_buttons)
print("Number of buttons with X:", result)
import tkinter as tk
import random
root = tk.Tk()

all_buttons = []

for row in range(3):
    for col in range(3):
         #btn = tk.Button(root, text=str(row*3+col))
         btn = tk.Button(root, text=random.choice(['X', 'O', ' ']))
         all_buttons.append(btn)
         btn.grid(row=row, column=col, sticky='news')

for btn in all_buttons:
    print('>', btn['text'], '<')

#---

result = sum(btn['text'] == 'X' for btn in all_buttons)
print("Number of buttons with X:", result)

result = sum(btn['text'] == 'O' for btn in all_buttons)
print("Number of buttons with O:", result)

result = sum(btn['text'] == ' ' for btn in all_buttons)
print("Number of empty buttons:", result)

print('---')

result = False
for btn in all_buttons:
    if btn['text'] == ' ':
        result = True
        break
print("There are empty buttons:", result)
print('---')

# the same using `any()` or `all()`    
result = any(btn['text'] == ' ' for btn in all_buttons)
print("Any button is empty:", result)
print("All buttons are used:", not result)
print('---')

result = all(btn['text'] != ' ' for btn in all_buttons)
print("Any button is empty:", not result)
print("All buttons are used:", result)
print('---')

result = all(btn['text'] == 'X' for btn in all_buttons)
print("Any button doesn't have X:", not result)
print("All buttons have X:", result)
print('---')

result = all(btn['text'] in ('O', 'X') for btn in all_buttons)
print("Any button doesn't have O or X:", not result)
print("All buttons have O or X:", result)
print('---')

rows = [
    all_buttons[0:3],
    all_buttons[3:6],
    all_buttons[6:9],
]    

for number, row in enumerate(rows, 1):
    result = all(btn['text'] == 'X' for btn in row)
    print("Row", number, "has three X (X wins):", result)
print('---')

columns = [
    [all_buttons[0], all_buttons[3], all_buttons[6]],
    [all_buttons[1], all_buttons[4], all_buttons[7]],
    [all_buttons[2], all_buttons[5], all_buttons[8]],    
]

for number, col in enumerate(columns, 1):
    result = all(btn['text'] == 'X' for btn in col)
    print("Column", number, "has three X (X wins):", result)

tk.mainloop()