python中的类型转换(StringVar到String)

2024-05-19 08:57:11 发布

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

我想在Python中将StringVar转换为String。在

Aim:在输入字段(tkinter)中输入的字符串必须转换为字符串,然后进行编码以获得其哈希值。在

以下是我的代码:

txt1 = StringVar()
scantxt = ttk.Entry(win, textvariable = txt1).pack()

txt1 = str(txt1.get()).encode()
sha256 = hashlib.sha256(txt1)
estr = sha256.hexdigest()

我得到的结果是空文本的散列。在

我不知道我哪里错了。请协助。在

谢谢你期待的帮助。在


Tags: 字符串代码编码stringtkinterwin中将aim
1条回答
网友
1楼 · 发布于 2024-05-19 08:57:11

通常,GUI程序位于一个循环中,等待事件响应。你发布的代码片段没有做到这一点。在

这个任务不需要StringVar。您可以给条目小部件一个StringVar,但它不需要它。您可以使用它的.get方法直接获取其文本内容。但您确实需要一种方法来告诉您的程序何时应该获取和处理该文本,以及它应该如何处理它。在

使用条目小部件有多种方法可以实现这一点:如果需要,可以将条目文本发生的每个更改通知给代码。这里不需要这个,我们可以让Tkinter在用户点击Return键时运行一个函数。我们可以使用小部件的.bind方法来实现这一点。在

import tkinter as tk
from tkinter import ttk
import hashlib

win = tk.Tk()
scantxt = ttk.Entry(win)
scantxt.pack()

def hash_entry(event):
    txt1 = scantxt.get()
    sha256 = hashlib.sha256(txt1.encode())
    estr = sha256.hexdigest()
    print(txt1, estr)

scantxt.bind("<Return>", hash_entry)

win.mainloop()

你会注意到我摆脱了

^{pr2}$

.pack方法(和.grid&;.place方法)返回None,因此上面的语句将None绑定到名称scantxt,它不保存对Entry小部件的引用。在

相关问题 更多 >

    热门问题