eingabe = Text(window, width=200, height=4)
eingabe.pack()
def c2n():
alphabet = "abcdefghijklmnopqrstuvwxyz"
k = 3
c = ''
code = ''
try:
code = str(eingabe.get('1.0',END))
code = code.lower()
code = code.replace("\n","")
except:
label1.configure(text="Error!")
finally:
if code.isalpha():
for z in code:
if z == ' ':
c += z
elif z in alphabet:
c += alphabet[(alphabet.index(z) + k) % (len(alphabet))]
label1.configure(text=(str(c)))
else:
label1.configure(text="only letters please")
我最近开始使用Python,我的首要任务之一是使用Tkiner创建一个Caesar密码加密/解密器GUI。这只是我代码中的一个片段。
所以我想使用Text not Entry为我的用户提供更多空间来填充内容,但我意识到现在我的用户无法创建\n
而无法点击文本字段中的下一个腐烂。问题是我检查代码.isalpha()
,如果文本只包含字母,那就不再有用了。
现在我正在寻找一种新方法来检查字母或找到一种新方法来处理\n
。
对其余垃圾代码的任何积极的批评和反馈也会很好,但正如我所说,我最近开始使用Python而英语不是我的母语。
答案 0 :(得分:0)
只需测试isspace
:
def crypt(text, k=3):
alphabet = "abcdefghijklmnopqrstuvwxyz"
result = []
for z in text.lower():
if z.isspace():
result.append(z)
elif z in alphabet:
result.append(alphabet[(alphabet.index(z) + k) % (len(alphabet))])
else:
raise AssertionError()
return ''.join(result)
def c2n(text):
try:
label1.configure(text=crypt(eingabe.get('1.0',END)))
except AssertionError:
label1.configure(text="only letters please")