首先,我是初学者,对此我很陌生,所以请不要太严厉,即使错误真的很愚蠢或可以避免......
话虽如此,我有一个Python作业,我必须在Python中制作wordle。我确实设法让我的程序在“简单”Python 中工作,但我一直在尝试让它与 tkinter 一起工作,以获得一个漂亮的界面。这是我第一次尝试 tkinter。
现在我遇到的问题是,我一直在尝试这样做,以便如果字母放错位置,则与猜测中的每个字母相关的标签将变为黄色,如果要猜测的单词中不存在,则为灰色,如果该字母已正确放置。我检查字母位置的方法是将位置存储在“结果”变量中,默认情况下如下所示: xxxxxx ,我的代码用 o 更改 x ,第一个 for 循环用于正确的位置,第二个 for 循环for 循环它添加了缺少的+。我这样做是因为它可以解决重复的字母。
我的想法是采用结果“结果”变量(例如,让我们说“xxo + xx”并将其与我的变量“命题”中的字母进行比较,这样如果结果中有一个x,则与该字母关联的标签是灰色的,如果有 o,则标签为绿色,如果有 +,则标签为黄色。 在此输入图片描述 当我尝试测试该程序时,我有这个:(这些是法语单词) 我不知道为什么,但是当我输入“voisin”时,第二个 i 就消失了,标签仅更改最后一个字母,并且 N 从黄色变为灰色
我知道问题一定在于我处理标签、结果变量、for 循环和代码中元素顺序的方式,但我一生都找不到方法,我可以满足于该程序我已经成功完成了,但我真的想让这个简单的事情发挥作用......
这是代码:
from tkinter import *
from tkinter import messagebox
import random
lexique = []
def lire_lexique(fichier) :
with open(fichier, mode="r",encoding='utf-8') as flux:
global lexique
for ligne in flux:
lexique.append(ligne.strip("\n"))
return lexique
lire_lexique("lexique.txt")
secret = str(random.choice(lexique))
secretresult = secret
root = Tk()
root.title("Wordle")
green = "#6ca965"
yellow = "#c8b653"
gray = "#787c7f"
black = "#000000"
white = "#FFFFFF"
root.config(bg=black)
guessnum = 1
wordInput = Entry(root)
wordInput.grid(row=999, column=0, padx=10, pady=10, columnspan=3)
def getGuess():
global secret
proposition = wordInput.get()
global guessnum
guessnum += 1
if guessnum <= 6:
if proposition not in lexique :
messagebox.showerror("pas dans le lexique","ce mot n'est pas dans le lexique, veuillez réessayer")
if proposition in lexique and len(proposition) == 6:
if secret == proposition:
messagebox.showinfo("correct!", f"correct! the word was {secret.title()}")
for letter in proposition :
label = Label(root, text=letter.upper())
label.grid(row=guessnum, column=proposition.index(letter), padx=10, pady=10)
else:
result = ["x"] * 6
for index, (letter, letter2) in enumerate(zip(proposition, secret)):
if letter == letter2:
result[index] = "o"
secret = secret.replace(letter, "x", 1)
for index, (letter, letter2) in enumerate(zip(proposition, secret)):
if letter in secret and result[index] == "x":
result[index] = "+"
secret = secret.replace(letter, "x", 1)
for char in result :
if char == "+" :
label.config(bg=black, fg=yellow)
elif char == "x" :
label.config(bg=black, fg=gray)
elif char == "o":
label.config(bg=black, fg=green)
elif len(proposition) < 6 or len(proposition) > 6:
messagebox.showerror("Veuillez entrer un mot de 6 lettres", "Le mot doit être un mot de 6 lettres")
else:
messagebox.showerror("C'est perdu", f"C'est perdu ! Le mot était {secretresult}")
wordGuessButton = Button(root, text="Guess", command=getGuess)
wordGuessButton.grid(row=999, column=3, columnspan=2)
root.mainloop()
j'ai eu 某些难以理解的问题(英语与法语),请不要重新编码 ton 脚本,只要有功能,我就可以使用。如果需要的话,请不要再不和谐了:Jamesfrench_
说出相关要点:
J'espère avoir pu t'aider
from tkinter import *
from tkinter import messagebox
import random
lexique = []
def lire_lexique(fichier) :
with open(fichier, mode="r",encoding='utf-8') as flux:
global lexique
for ligne in flux:
lexique.append(ligne.strip("\n"))
return lexique
lire_lexique("lexique.txt")
secret = str(random.choice(lexique))
secretresult = secret
root = Tk()
root.title("Wordle")
green = "#6ca965"
yellow = "#c8b653"
gray = "#787c7f"
black = "#000000"
white = "#FFFFFF"
root.config(bg=black)
root.geometry("400x250")
guessnum = 1
wordInput = Entry(root)
wordInput.grid(row=999, column=0, padx=10, pady=10, columnspan=3)
def getGuess():
global secret
proposition = wordInput.get()
global guessnum
guessnum += 1
if guessnum <= 6:
if proposition not in lexique :
messagebox.showerror("pas dans le lexique","ce mot n'est pas dans le lexique, veuillez réessayer")
if proposition in lexique and len(proposition) == 6:
if secret == proposition:
messagebox.showinfo("correct!", f"correct! the word was {secret.title()}")
else:
for i in range(6):
result = ["x"] * 6
label = Label(root, text=proposition[i].upper())
label.grid(row=guessnum, column=i, padx=10, pady=10)
if secret[i] == proposition[i]:
result[i] = "o"
elif proposition[i] in secret:
result[i] = "+"
if result[i] == "+":
label.config(bg=black, fg=yellow)
elif result[i] == "x":
label.config(bg=black, fg=gray)
elif result[i] == "o":
label.config(bg=black, fg=green)
print(result)
elif len(proposition) < 6 or len(proposition) > 6:
messagebox.showerror("Veuillez entrer un mot de 6 lettres", "Le mot doit être un mot de 6 lettres")
else:
messagebox.showerror("C'est perdu", f"C'est perdu ! Le mot était {secretresult}")
wordGuessButton = Button(root, text="Guess", command=getGuess)
wordGuessButton.grid(row=999, column=3, columnspan=2)
root.mainloop()
PS:(j'ai pas utiliser gpt)