Tkinter python 3名称';用户输入';没有定义
所以我得到了这个任务,我应该创建一个回文检测器,并使用tkinter创建一个简单的接口。我们还必须删除指定字符并用空格替换它们。我还想补充一点,我们不允许使用isalnum() 现在的问题是:Tkinter python 3名称';用户输入';没有定义,tkinter,python-3.6,palindrome,nameerror,Tkinter,Python 3.6,Palindrome,Nameerror,所以我得到了这个任务,我应该创建一个回文检测器,并使用tkinter创建一个简单的接口。我们还必须删除指定字符并用空格替换它们。我还想补充一点,我们不允许使用isalnum() 现在的问题是: File "Documents/palindrometkinter.py", line 71, in result turn() File "Documents/palindrometkinter.py", line 62, in turn i = len(user_input) NameError: n
File "Documents/palindrometkinter.py", line 71, in result
turn()
File "Documents/palindrometkinter.py", line 62, in turn
i = len(user_input)
NameError: name 'user_input' is not defined
说到python,我真的是个新手,所以我不是很擅长,但在几个小时的无所事事后,我开始寻求帮助。
这是我到目前为止的代码
# -*- coding: UTF-8 -*-
import tkinter
import tkinter.messagebox
def main():
settings()
tkinter.mainloop()
def settings():
main_window = tkinter.Tk()
top_frame = tkinter.Frame()
mid_frame = tkinter.Frame()
bottom_frame = tkinter.Frame()
main_window.title("Palindromdetektor")
main_window.geometry("400x400")
global label1
label1 = tkinter.Label(top_frame, text = "Skriv in ett palindrom nedan
för att testa det!",
bg = "green", width = 60, height = 6)
global button1
button1 = tkinter.Button(mid_frame, text = "Testa palindrom", height =
3, width = 22, command = result)
global button2
button2 = tkinter.Button(bottom_frame, text ="Spara palindrom", height
= 3, width = 22, command = save)
global button3
button3 = tkinter.Button(bottom_frame, text ="Avsluta programmet",
height = 3, width = 22, command=main_window.destroy)
global palindromentry
palindromentry = tkinter.Entry(mid_frame, width = 67)
palindromentry.pack()
top_frame.pack()
mid_frame.pack()
bottom_frame.pack()
label1.pack()
button1.pack()
button2.pack()
button3.pack()
def entry():
not_valid = " -,.!?:;'+()/" #The not accepted characters
user_input = palindromentry.get()
i=0
while i < len(not_valid):
user_input = user_input.replace( not_valid[i], "")
i = i + 1
global backward_string
backward_string = ""
def turn():
i = len(user_input)
while i > 0:
backward_string += user_input[i-1]
i -=1
if user_input == backward_string:
equal = True
def result():
turn()
entry()
feedback_string = ""
if (user_input == backward_string):
label1.config(text="Ja, detta är ett palindrom!", bg="green") #when
it's a palindrome
elif (user_input != backward_string):
label1.config(text="Det är inte en palindrom!", bg="red") #message
when it's not a palindrome
else:
label1.config(text="Hoppsan nu har något gått fel!")
def save():
if (user_input == backward_string):
my_palindrome = open("palindrom.txt", "a") # if it's a
palindrome you should be able to save it.
my_palindrome.write(user_input + "\n")
label1.config(text="Palindrom har sparats!")
elif (user_input != backward_string):
label1.config(text="Det gick inte att spara, måste vara en
palindrom!")# you can't save it when it's not
else:
label1.config(text="Något gick fel!") # when something goes wrong
if __name__ == '__main__':
main()
#-*-编码:UTF-8-*-
进口tkinter
导入tkinter.messagebox
def main():
设置()
tkinter.mainloop()
def设置():
main_window=tkinter.Tk()
顶部框架=tkinter.frame()
中间帧=tkinter.frame()
底部框架=tkinter.frame()
主窗口标题(“回文detektor”)
主窗口几何图形(“400x400”)
全局标签1
label1=tkinter.Label(上框,text=“Skriv in ett palindrom nedan
för att testa det!“,
bg=“绿色”,宽度=60,高度=6)
全局按钮1
button1=tkinter.Button(中间帧,text=“Testa回文”,高度=
3,宽度=22,命令=结果)
全局按钮2
button2=tkinter.Button(底部框架,text=“Spara回文”,高度
=3,宽度=22,命令=save)
全局按钮3
button3=tkinter.Button(底部框架,text=“Avsluta programmet”,
高度=3,宽度=22,命令=main_window.destroy)
全局回文
回文长度=tkinter.Entry(中间帧,宽度=67)
palindromentry.pack()
顶部框架包()
mid_frame.pack()
底部框架包()
标签1.pack()
按钮1.pack()
按钮2.pack()
按钮3.pack()
def entry():
not_valid=“-,.!?:;”+()/“#未接受的字符
user\u input=palindromentry.get()
i=0
而i0时:
向后_字符串+=用户_输入[i-1]
i-=1
如果用户\u输入==向后\u字符串:
相等=真
def result():
转()
条目()
反馈_字符串=“”
如果(用户输入==反向字符串):
label1.config(text=“Ja,dettaär ett palindrom!”,bg=“green”)#
这是回文
elif(用户输入!=向后输入字符串):
label1.config(text=“Detär inte en palindrom!”,bg=“red”)#消息
当它不是回文时
其他:
label1.config(text=“hoppsannuharnågot gått fel!”)
def save():
如果(用户输入==反向字符串):
my_palindrome=open(“palindrom.txt”,“a”)#如果是a
回文你应该能够保存它。
我的回文。写(用户输入+“\n”)
label1.config(text=“Palindrom har sparats!”)
elif(用户输入!=向后输入字符串):
label1.config(text=“Det gick inte att spara,måste vara en
回文!)#如果没有回文,则无法保存
其他:
label1.config(text=“Något gick fel!”)#当出现问题时
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()
您的用户输入变量仅在输入函数中定义。
您正在尝试访问当前上下文中不存在的变量(turn()
)
如果您希望能够访问每个函数中的变量,请将其定义为全局变量,方法是将其置于脚本中其他所有变量之上
或者每次希望访问时都使用您的回文条目.get()
。
希望这能帮助您更多地了解python
这可能会有帮助:所以我让用户输入了一个全局变量。结果是程序启动,但当您单击“Testa回文”(尝试回文)按钮或“spara回文”(保存回文)按钮时,不会发生任何事情。