【问题标题】:Why won't tkinter's "root.mainloop()" repeat my code?为什么 tkinter 的“root.mainloop()”不会重复我的代码?
【发布时间】:2019-11-07 21:47:57
【问题描述】:

我正在做一个项目来获取秘密信息。我试图在加密消息后让代码重复自己。这是我试过的代码。

from tkinter import Tk, messagebox

print('To decrypt do -(number you used to encryt)')

root = Tk()

alphabet = 'abcdefghijklmnopqrstuvwxyz'
newMessage = ''

message = input('Please enter a message: ')

key = input('Enter a key (-26-26): ')
key = int(key)

for character in message:
  if character in alphabet:
    position = alphabet.find(character)
    newPosition = (position + key) % 26
    newCharacter = alphabet[newPosition]
    newMessage += newCharacter
  else:
    newMessage += character

print('Your new message is: ', newMessage)

root.mainloop()

我尝试移动 root = Tk(),但没有成功。另一件事是我不希望它重复print('To decrypt do -(number you used to encryt)')

如果有人知道它为什么不循环,请告诉我。

【问题讨论】:

标签: python loops tkinter


【解决方案1】:

Tkinter 是一个在 python 中创建 GUI 应用程序的模块,它与您尝试做的事情无关。

要使代码自行重复,您需要使用while 循环或for 循环。

在这种情况下,while 循环是更好的选择:

alphabet = 'abcdefghijklmnopqrstuvwxyz'
message = ''

while True:
    newMessage = ''

    print('To decrypt do -(number you used to encryt)')

    message = input('Please enter a message: ')

    key = input('Enter a key (-26-26): ')
    key = int(key)

    for character in message:
      if character in alphabet:
        position = alphabet.find(character)
        newPosition = (position + key) % 26
        newCharacter = alphabet[newPosition]
        newMessage += newCharacter
      else:
        newMessage += character

    print('Your new message is: ', newMessage)

while True 表示永远继续。您通常希望有一种退出循环的方法。例如,使用while message != "-1"这将在用户输入-1时退出循环

【讨论】:

  • 多次运行脚本后newMessage会将所有消息添加到一起。
  • 在 while 循环内移动 newMessage = ''(见编辑)
【解决方案2】:

您将要使用while 循环。 root.mainloop 运行一个图形程序,它不执行您在此处尝试的操作。

【讨论】:

  • 那么如何将它编码成python呢?我不是最好的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多