python - 将变量与 .get() 进行比较的问题
问题描述
我有一个问题,我不知道如何将变量与.get()
条目的 a 进行比较,那么问题是什么?
我是 python 新手,我是法国人
我的代码:
from tkinter import *
from random import *
from tkinter.messagebox import *
liste = ["A TI TA", "B TA TI TI TI", "C TA TI TA TI", "D TA TI TI", "E TI", "F TI TI TA TI", "G TA TA TI", "H TI TI TI TI", "I TI TI", "J TI TA TA TA", "K TA TI TA", "L TI TA TI TI", "M TA TA", "N TA TI", "O TA TA TA", "P TI TA TA TI", "Q TA TA TI TA", "R TI TA TI", "S TI TI TI", "T TA", "U TI TI TA", "V TI TI TI TA", "W TI TA TA", "X TA TI TI TA", "Y TA TI TA TA", "Z TA TA TI TI"]
class Interface(Frame):
def __init__(self, fenetre, **kwargs):
def cliquer():
lettrer = choice(liste)
self.lettre["text"] = lettrer
def verification():
if saisie.get() == (lettrer):
showinfo("Saisie correcte", "Saisie correcte")
else:
showinfo("Erreur", "ERREUR")
Frame.__init__(self, fenetre, width=768, height=576, **kwargs)
self.pack(fill=BOTH)
self.message2 = Label(self, text="APRENDRE LE CODE MORSE")
self.message2.pack(side="top")
self.message = Label(self, text="Cliquez sur générer")
self.message.pack()
self.lettre = Label(self, text="")
self.lettre.pack()
saisie= StringVar()
self.champ = Entry(self, textvariable = saisie, bg = "bisque", fg = "maroon")
self.champ.focus_set()
self.champ.pack()
self.bouton_quitter = Button(self, text="Quitter", command=self.quit)
self.bouton_quitter.pack(side="left")
self.bouton_cliquer = Button(self, text="Generer", textvariable = "lettrer", command = cliquer)
self.bouton_cliquer.pack(side="right")
self.confirmbouton = Button(self, text="Valider", command = verification)
self.confirmbouton.pack()
fenetre = Tk()
interface = Interface(fenetre)
interface.mainloop()
interface.destroy()
当我按下“valider”时我的错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\albru\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:/Users/albru/.PyCharmCE2018.3/config/scratches/interface.py", line 15, in verification
if saisie.get() == (lettrer):
NameError: name 'lettrer' is not defined
ZeEleveZozo
解决方案
在此刻:
if saisie.get() == (lettrer):
showinfo("Saisie correcte", "Saisie correcte")
lettrer
没有定义。为什么?因为lettrer
不是全局变量。它是一个实例变量Interface
。为了表明您要与saisie.get()
实例变量进行比较lettrer
,您需要self.
像这样添加它:
if saisie.get() == self.lettrer: # I removed the redundant parantheses
showinfo("Saisie correcte", "Saisie correcte")
推荐阅读
- php - SQLSTATE = 23502 出现在我部署的网站上。(通过上传 .csv)
- python - 将悬停文本添加到 Plotly 散点图线或散点图线的多种颜色
- javascript - 返回或推送字符串 Char
- export - Sqoop 导出失败并出现 NumberFormatException
- excel - 如何将多个句子中的每个单词放入Excel中的文本单元格?
- .net-core - .NET 核心中的 OpenTracing,而不依赖于特定的解决方案库
- powershell - 如何从结果对象 Invoke-WebRequest 命令中“单击”元素
- python - Selenium Webdriver with Python - 无法在使用 Selenium Web 驱动程序的 Web 应用程序中提供输入
- oracle-apex-5.1 - 从 CSV 文件加载 Apex 数据 - 表查找问题
- sql - 如何添加 CTE 以提高存储过程性能?