[英]Type conversion in python (StringVar to String)
我想將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
,它不保存到輸入構件的參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.