python中的类型转换(StringVar到String)
我想在Python中将StringVar转换为String 目标:必须将输入字段(tkinter)中输入的字符串转换为字符串,然后对其进行编码以获得其哈希值 下面是我的代码:python中的类型转换(StringVar到String),python,tkinter,type-conversion,Python,Tkinter,Type Conversion,我想在Python中将StringVar转换为String 目标:必须将输入字段(tkinter)中输入的字符串转换为字符串,然后对其进行编码以获得其哈希值 下面是我的代码: txt1 = StringVar() scantxt = ttk.Entry(win, textvariable = txt1).pack() txt1 = str(txt1.get()).encode() sha256 = hashlib.sha256(txt1) estr = sha256.hexdigest()
txt1 = StringVar()
scantxt = ttk.Entry(win, textvariable = txt1).pack()
txt1 = str(txt1.get()).encode()
sha256 = hashlib.sha256(txt1)
estr = sha256.hexdigest()
我得到的结果是空白文本的散列
我不知道我错在哪里。请帮忙
感谢您期待的帮助。通常,GUI程序位于循环中,等待事件响应。您发布的代码片段没有做到这一点 此任务不需要StringVar。您可以给条目小部件一个StringVar,但它不需要它。您可以使用其
.get
方法直接获取其文本内容。但是您确实需要一种方法来告诉您的程序什么时候应该获取和处理该文本,以及应该如何处理该文本
使用条目小部件有多种方法可以做到这一点:如果需要,可以在条目文本发生任何更改时通知您的代码。在这里我们不需要它,我们可以让Tkinter在用户点击返回键时运行一个函数。我们可以使用小部件的.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()
.pack
方法(以及.grid
和.place
方法)返回None
,因此上面的语句将None
绑定到名称scantxt
,它不会保存对条目小部件的引用 通常,GUI程序位于循环中,等待事件响应。您发布的代码片段没有做到这一点
此任务不需要StringVar。您可以给条目小部件一个StringVar,但它不需要它。您可以使用其.get
方法直接获取其文本内容。但是您确实需要一种方法来告诉您的程序什么时候应该获取和处理该文本,以及应该如何处理该文本
使用条目小部件有多种方法可以做到这一点:如果需要,可以在条目文本发生任何更改时通知您的代码。在这里我们不需要它,我们可以让Tkinter在用户点击返回键时运行一个函数。我们可以使用小部件的.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()
.pack
方法(以及.grid
和.place
方法)返回None
,因此上面的语句将None
绑定到名称scantxt
,它不会保存对条目小部件的引用 这不是你全部的代码。你发布的内容将无法运行。但看起来您试图在用户有机会输入字符串之前对条目内容进行散列。这不是您的全部代码。你发布的内容将无法运行。但看起来您试图在用户有机会输入字符串之前对条目的内容进行散列。scantxt.bind(“,hash_Entry”)这样我得到的是“AttributeError:'NoneType'对象没有属性'bind'。@KartikA这意味着在您的代码scantxt
中是None
,而不是条目小部件。你仔细阅读了我答案的最后一部分了吗?scantxt.bind(“,hash_entry)我得到了“AttributeError:'NoneType'对象没有属性'bind'”。@KartikA这意味着在你的代码中scantxt是None
,而不是entry小部件。你仔细阅读了我答案的最后一部分了吗?