概述
我有一些代码要求用户输入26个字符来制作自己的加密代码,如果长度为26个字符且不是字母或预设的encryption_code,则代码会将encryption_code更改为他们输入的内容.
import tkinter
from tkinter import *
from tkinter import ttk
from tkinter.ttk import *
encryption_code = 'LFWOAYUISVKMNXPBDCRJTQEGHZ'
window = tkinter.Tk()
window.title("Encryption/Decryption")
change_frame = tkinter.Frame(window)
changed_frame = tkinter.Frame(window)
encrypt_entry = tkinter.Entry(change_frame)
def code_change():
global changed_frame
global encrypt_entry
print(len(encrypt_entry.get()))
if encrypt_entry.get() == 'LFWOAYUISVKMNXPBDCRJTQEGHZ' or 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
encrypt_entry.delete(0, tkinter.END)
changed_incorrect.configure(background=window.cget('bg'))
changed_incorrect.config(text="Please enter a different code", foreground='red')
changed_incorrect.pack()
changed_frame.pack()
if len(encrypt_entry.get()) == 26:
encryption_code = encrypt_entry.get()
encrypt_entry.delete(0, tkinter.END)
changed_label.configure(background=window.cget('bg'))
changed_label.config(text="You have successfully changed the encryption code!")
change_header.config(text=str(encryption_code))
changed_incorrect.pack_forget()
changed_label.pack()
changed_frame.pack()
elif len(encrypt_entry.get()) < 26 or len(encrypt_entry.get()) > 26:
changed_incorrect.configure(background=window.cget('bg'))
changed_incorrect.config(text="Please enter only 26 characters", foreground='red')
changed_label.pack_forget()
changed_incorrect.pack()
changed_frame.pack()
change_label = tkinter.Label(change_frame, text="Please enter your own encryption code in block capitals", font=('Helvetica', 12))
change_header = tkinter.Label(change_frame, text="Make sure it is all 26 letters and do not repeat a letter to prevent errors", font=('Helvetica', 12))
change_confirm = ttk.Button(change_frame, text="Confirm", width=20, command=code_change)
changed_label = tkinter.Label(changed_frame, text="You have successfully changed the encryption code!", font=('Helvetica', 14))
changed_incorrect = tkinter.Label(changed_frame, text="Please enter your code again", font=('Helvetica', 14))
change_label.pack()
change_header.pack()
encrypt_entry.pack()
change_confirm.pack()
change_frame.pack()
window.mainloop()
我的问题是每当我尝试输入26个字符时,例如QWERTYUIOPASDFGHJKLZXCVBNM,它告诉我当它显然是26个字符时我没有输入26个字符,并且如果用户没有输入26个字符,则该消息仅用于弹出.
更新:使用print(len(encrypt_entry.get()))向我显示我的条目是26,但我的代码是说它不是26个字符.
解决方法:
问题出现在第一个if语句中 –
if encrypt_entry.get() == 'LFWOAYUISVKMNXPBDCRJTQEGHZ' or 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
这始终是True,因为布尔表达式的分组使得它 –
if (encrypt_entry.get() == 'LFWOAYUISVKMNXPBDCRJTQEGHZ') or ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
并且所有非空字符串在布尔上下文中都是True.这会导致程序删除条目中的任何内容,因此您将从第二个if条件中获取错误.你可以改为 –
encryptgetted = encrypt_entry.get()
if encryptgetted == 'LFWOAYUISVKMNXPBDCRJTQEGHZ' or encryptgetted == 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
标签:python,if-statement,tkinter
来源: https://codeday.me/bug/20190829/1762367.html
最后
以上就是和谐手套为你收集整理的python get_len_python – 使用len和get()函数给出错误的统计信息?的全部内容,希望文章能够帮你解决python get_len_python – 使用len和get()函数给出错误的统计信息?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复