gpt4 book ai didi

python - 由于某种原因它只显示一个 if 语句

转载 作者:行者123 更新时间:2023-12-01 09:04:26 26 4
gpt4 key购买 nike

        from tkinter import *
import random

easy = ['A','V','M','P','O','E']
random.shuffle(easy)




def raise_frame(frame):
frame.tkraise()

root = Tk()

f1 = Frame(root)
f2 = Frame(root)
f3 = Frame(root)
f4 = Frame(root)

for frame in (f1, f2, f3, f4):
frame.grid(row=0, column=0, sticky='news')

Random = Label(f1, text=easy, bg="#00CDCD", font=("Chewy", 20))
Random.pack(side="top", fill="x", pady=20)

Entryfield = Entry(f1, font=("Chewy", 22))
Entryfield.pack(pady=105)

Begin = Button(f1, text='Begin', font=("Chewy", 24), bg="#00CDCD",
command=lambda: Random.pack_forget() + Begin.pack_forget())
Begin.pack(side="bottom", fill="both")

Submit = Button(f1, text="Submit", bg="#00CDCD", font=("Chewy", 24), command=lambda: winlose())
Submit.pack(fill="x", side="bottom")

当我按提交时,此语句仅显示不正确,我尝试了其他条件,例如 if not 和 else,但仍然显示相同的语句,代码仅在我使用 != 时显示标签。

def winlose():
if Entryfield == Random:
Win = ("Your answer was correct")
tts = Label(f1, text=Win, font=('Chewy', 20), bg="#00CDCD")
tts.pack()
else:
L = ("Your answer is wrong")
ttr = Label(f1, text=L, font=('Chewy', 20), bg="#00CDCD")
ttr.pack()


raise_frame(f1)
root.geometry("800x400")
root.mainloop()

最佳答案

您应该替换该行:

        if Entryfield == Random:

用行:

        if Entryfield.get() == Random['text']:

这意味着您不是比较 Entry 小部件和 Label 小部件,而是比较它们各自的文本。

<小时/>

另请注意:

        from tkinter import *

应该是:

from tkinter import *

(这很明显,可能只是一个拼写错误)

<小时/>

它可能会帮助您删除该行:

root.geometry("800x400")

如果没有这一行,窗口将自动调整大小以适应所有小部件。

<小时/>

还有一行:

              command=lambda: Random.pack_forget() + Begin.pack_forget())

调用时会引发错误,因为 lambda 不是这样工作的:你不能只添加函数。相反,我会创建一个新函数:

def begin_func():
Random.pack_forget()
Begin.pack_forget()

并将该行更改为:

              command=begin_func)
<小时/>

最后,我假设您只希望在按下 Begin 后即可输入答案,要实现此目的,您应该更改:

Entryfield = Entry(f1, font=("Chewy", 22))

致:

Entryfield = Entry(f1, font=("Chewy", 22), state=DISABLED)

并将以下行添加到 begin_func 中:

    Entryfield.config(state=NORMAL)
<小时/>

总而言之,最终的代码应该是:

from tkinter import *
import random

easy = ['A','V','M','P','O','E']
random.shuffle(easy)


def raise_frame(frame):
frame.tkraise()

def begin_func():
Random.pack_forget()
Begin.pack_forget()
Entryfield.config(state=NORMAL)

root = Tk()

f1 = Frame(root)
f2 = Frame(root)
f3 = Frame(root)
f4 = Frame(root)

for frame in (f1, f2, f3, f4):
frame.grid(row=0, column=0, sticky='news')

Random = Label(f1, text=easy, bg="#00CDCD", font=("Chewy", 20))
Random.pack(side="top", fill="x", pady=20)

Entryfield = Entry(f1, font=("Chewy", 22), state=DISABLED)
Entryfield.pack(pady=105)

Begin = Button(f1, text='Begin', font=("Chewy", 24), bg="#00CDCD",
command=begin_func)
Begin.pack(side="bottom", fill="both")

Submit = Button(f1, text="Submit", bg="#00CDCD", font=("Chewy", 24), command=lambda: winlose())
Submit.pack(fill="x", side="bottom")
def winlose():
if Entryfield.get() == Random['text']:
Win = ("Your answer was correct")
tts = Label(f1, text=Win, font=('Chewy', 20), bg="#00CDCD")
tts.pack()
else:
L = ("Your answer is wrong")
ttr = Label(f1, text=L, font=('Chewy', 20), bg="#00CDCD")
ttr.pack()


raise_frame(f1)
root.mainloop()

关于python - 由于某种原因它只显示一个 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52186640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com