当前位置: 代码迷 >> python >> python中的类型转换(将StringVar转换为String)
  详细解决方案

python中的类型转换(将StringVar转换为String)

热度:108   发布时间:2023-07-16 09:57:50.0

我想将StringVar转换为Python中的String

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

下面是我的代码:

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

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

我得到的结果是空白文本的哈希。

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

感谢您的帮助。

通常,GUI程序处于循环中,等待事件响应。 您发布的代码片段无法做到这一点。

您不需要StringVar即可完成此任务。 您可以为Entry小部件提供StringVar,但不需要它。 您可以使用.get方法直接获取其文本内容。 但是,您确实需要一种方法来告诉您的程序何时应获取和处理该文本以及应如何处理。

有多种方法可以使用Entry小部件执行此操作:如果需要,可以将Entry文本发生的每次更改通知您的代码。 我们不需要这里,我们可以要求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()

您会注意到我摆脱了

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

.pack方法(和.grid.place方法)返回None ,所以上面的语句结合None以名scantxt ,它保存到输入构件的参考。

  相关解决方案