为什么我的共享空间注册为{}

2024-10-04 05:33:08 发布

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

我做了一个简单的程序,从英语翻译成一个完全不同的(随机英语),当它显示翻译时,它将空格显示为{}。有什么建议吗

from tkinter import *

english = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t',
           'u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','!',
           '\"','#','$','%','&','\'','\'','(',')','*','+',',','-','.','/',':',';','?','@','[','\\',']','^','_','`','{','|','}','~',' ', ',','\t','\n','\r','\x0b','\x0c']

potatish =['0','1','2','3','4','5','6','7','8','9','a','v','l','d','e','z','j','s','i','x','q','u','f','b','o','y','c','m','t',
           'k','p','g','h','n','r','w','A','V','L','D','E','Z','J','S','I','X','Q','U','F','B','O','Y','C','M','T','K','P','G','H','N','R','W','!',
           '\"','#','$','%','&','\'','\'','(',')','*','+',',','-','.','/',':',';','?','@','[','\\',']','^','_','`','{','|','}','~',' ', ',','\t','\n','\r','\x0b','\x0c']


class Program(Frame):
    """ A Program to translate """

    def __init__ (self, master):
        """Initialise the frame"""
        Frame.__init__(self, master)
        self.grid()
        self.create_widgets()

    def create_widgets(self):
        """Buttons!!!"""
        #Text
        self.text = Label(self, text = "Please enter some text:")
        self.text.grid()

        #Field
        self.user = Entry(self)
        self.user.grid()

        #Button
        self.translate = Button(self, text = "Translate")
        self.translate.grid()
        self.translate["command"] = self.update_console

        #Output
        self.output = Label(self, text = "Output:\n")
        self.output.grid()

        #finished
        self.finished = Label(self, text = "")
        self.finished.grid()

    def update_console(self):
        """Updates output"""
        self.trans = self.translatedef()
        self.finished["text"] = self.trans


    def translatedef(self):
        f = []
        i = -1
        j = -1
        text = self.user.get()
        while i != -2:
            i+=1
            try:
                l = english.index(text[i])
                f.append(potatish[l])
            except:
                while j != -2:
                    j+=1
                    try:
                        return f
                    except:
                        break
                break

root = Tk()
root.title("Potatish")
root.geometry("500x300")

app = Program(root)
root.mainloop()

Tags: textselfoutputenglishdefrootprogramlabel
1条回答
网友
1楼 · 发布于 2024-10-04 05:33:08

您正在将标签的text设置为列表,而不是字符串。Tkinter将该列表的空元素显示为{}

要更正它,请在将其发送到标签之前从列表中形成一个字符串:

def update_console(self):
    """Updates output"""
    self.trans = ''.join(self.translatedef())
    self.finished["text"] = self.trans

相关问题 更多 >