【问题标题】:Python tkinter encoder which but the programme is so longPython tkinter 编码器,但是程序太长了
【发布时间】:2021-06-01 05:08:21
【问题描述】:

所以我的想法是制作一个编码器,我的意思是当用户在称为文本的标签中写入例如“a”时,程序粘贴结果为 ex“}”等等。

问题是我是否必须为字母表中的每个字母和标签文本中的每个位置写“如果”我的意思是如果 user_code[0] 如果用户代码[1] 等等

import tkinter as tk

#making main window
root = tk.Tk()
root.title("Szyfrator")
root.geometry("600x300")

#getting text
def getting_Text():
    user_code = text.get("1.0",'end-1c')
    if user_code[0] == 'a' :
       result.insert(tk.END, '[', 'big')
    if user_code[0] == 'b':
        result.insert(tk.END, ';', 'big')
#UX of the window
right_margin = tk.Frame(root)
right_margin.pack (side=tk.RIGHT, expand =tk.YES , fill=tk.BOTH)
left_margin = tk.Frame(root)
left_margin.pack(side=tk.LEFT, expand=tk.YES, fill=tk.BOTH)
#after clicking button function getting_text() is used
button = tk.Button( root , text = "Szyfruj", activebackground = "#FFFFFF", command=getting_Text)
button.pack( side = tk.TOP )
text=tk.Text(root, width=36, height=15 )
text.pack(side= tk.LEFT)
result= tk.Text(root, width=36, height=15 )
result.pack(side=tk.RIGHT)


#  ):


root.mainloop()

【问题讨论】:

    标签: python tkinter ttk encoder


    【解决方案1】:

    不,您可以使用 for 循环遍历 user_code 的字母,并创建一个字典来将一个字母映射到另一个字母。

    encoded = {
        "a": "[",
        "b": ";"
    }
    
    def getting_Text():
        user_code = text.get("1.0", 'end-1c')
        for letter in user_code:
            try:
                result.insert(tk.END, encoded[letter], 'big')
            except KeyError: # if we don't have an encoding for a letter, a KeyError will be raised which we capture
                print("Oops, no encoding found for letter %s" % letter)
    

    如果您有许多不同的字母编码并且不想输入那么多逗号、引号、冒号,您甚至可以像这样创建字典:

    letters = "abcdefghijklmnopqrstuvwxyz" # letters and encodings must have the same amount of symbols, else it may give you an IndexError: index out of range
    encodings = "[;]:_-#'+*´`?=)(/&%$§!°^<>"
    encoded = {key: value for key, value in zip(list(letters), list(encodings))}
    

    【讨论】:

    • 我真的很爱你们,非常感谢你们,
    • @Kyle2115 没问题! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 2020-12-13
    • 2019-07-11
    • 2016-03-19
    • 2014-01-31
    • 2019-01-24
    相关资源
    最近更新 更多