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