我在输出的末尾得到了{}。这是什么原因造成的?如何消除?

2024-10-02 04:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试我的手在一个简单的图形用户界面加密和解密的消息与“秘密号码”/“密钥标识符在同一个窗口的乐趣。到目前为止,它的工作,我很高兴与它。我唯一的问题是,我在crypt()函数中得到了我想要的结果,然后是{}。使用normal print()函数,我没有这个问题。但是,使用GUI它确实可以。我想是包裹tkinter在做这个

我的代码:

from tkinter import *
import tkinter.messagebox


def crypt():
    so = int(nu1.get())
    inp = str(nu2.get().upper())
    old_dic = {chr(i): i * (int(so)+int(so))for i in range(ord("A"), ord("A") + 26)}   
    if len(inp) >= 1:
        bit = list(inp)
        spell = list(map(old_dic.get, bit))
        spell = spell[::-1]            
        ans1 = (*spell, "")
        blank4.insert(0, ans1)
        
    else:
        print("Improper input.")
        
main = Tk()
Label(main, text = "Enter secret number:").grid(row=0)
Label(main, text = "Cryptify:").grid(row=1)
Label(main, text = "Encrypted output:").grid(row=2)

Button(main, text='Show', command=crypt).grid(row=3, column=1, sticky=W, pady=4)

nu1 = Entry(main)
nu2 = Entry(main)
blank4 = Entry(main)
                   
nu1.grid(row=0, column=1)
nu2.grid(row=1, column=1)
blank4.grid(row=2, column=1)



mainloop()

我得到的加密输出如下所示:

Secret Number: 45

Cryptify: Hello

Encrypted Output: 7110 6840 6840 6210 6480 {}

输出应如下所示:

Secret Number: 45

Cryptify: Hello

Encrypted Output: 7110 6840 6840 6210 6480


Tags: textgetsomaintkintercolumngridint
1条回答
网友
1楼 · 发布于 2024-10-02 04:27:12

原因很简单,tkinter使用tcl,它不知道pythonlisttuple是什么,这是一种tcl读取元组/列表的方式,就像您注意到的那样,将它放在{}中,因此将其转换为字符串,如:

ans1 = (*map(str,spell), "")
blank4.insert(0, ' '.join(ans1))

类似地,在所有可以看到这种情况的地方都要这样做。对不起,我前一段时间已经发布了答案,互联网已关闭:/


我也不明白为什么要在元组末尾插入一个空字符串,你可以去掉它

ans1 = map(str,spell)          
blank4.insert(0, ' '.join(ans1))

相关问题 更多 >

    热门问题