Python 如何从输入字段中获取数据并在Tkinter上的函数中使用

Python 如何从输入字段中获取数据并在Tkinter上的函数中使用,python,tkinter,Python,Tkinter,我用这段代码在Tkinter中创建了一个加密程序 纯python上的程序后端正在按预期运行。当我使用Tkinter并使用submit按钮为密码和要加密的数据创建表单时,我使用Tkinter的输入功能输入密码和要输入的数据。但是当我使用.get()函数将数据存储在变量中并执行加密任务时,我不能将.get()方法用作.grid或.pack()都创建非类型的输入函数,当我在使用.grid()之前使用.get()函数时或.pack()错误是str type没有网格或pack函数 我是一个初学者程序员,我

我用这段代码在Tkinter中创建了一个加密程序

纯python上的程序后端正在按预期运行。当我使用Tkinter并使用submit按钮为密码和要加密的数据创建表单时,我使用Tkinter的输入功能输入密码和要输入的数据。但是当我使用
.get()
函数将数据存储在变量中并执行加密任务时,我不能将
.get()
方法用作
.grid
.pack()
都创建
非类型
的输入函数,当我在使用
.grid()之前使用
.get()
函数时
.pack()
错误是str type没有网格或pack函数

我是一个初学者程序员,我不知道这是什么问题,请帮助我

代码是:

from tkinter import *

root = Tk()
root.title("Encryptor")

def encrypt(sentence, key):
    asc_sentence = []
    asc_key = []
    encryp = []
    encrypted = ""

    for letter in key:
        le = ord(letter) - 17
        asc_key.append(le)
    asc_sum = sum(asc_key)

    for letter in sentence:
        lex = ord(letter) + asc_sum
        asc_sentence.append(lex)

    for i in asc_sentence:
        lconv = chr(i)
        encryp.append(lconv)
    for index in encryp:
        encrypted += index

    enc = Label(root, textvariable=encrypted)
    enc.pack()


def input_enc():
    intro = Label(root, text="------------------------- Encrypt your Data----------------------")
    intro.pack()
    pwd_l = Label(root, text="Enter your Key to encrypt the data: ")
    pwd_l.pack()
    password = Entry(root, width=25).pack()
    data_l = Label(root, text="Input the data You want to Encrypt: ")
    data_l.pack()
    data = Entry(root, width=25).pack()
    edata = data.get()
    epwd = password.get()
    submit = Button(root, text="Encrypt", command=lambda: encrypt(edata, epwd))
    submit.pack()

input_enc()
root.mainloop()
错误是:

Traceback (most recent call last):
  File "/home/lord_hendrix17/PycharmProjects/P0/main.py", line 46, in <module>
    input_enc()
  File "/home/lord_hendrix17/PycharmProjects/P0/main.py", line 41, in input_enc
    edata = data.get()
AttributeError: 'NoneType' object has no attribute 'get'

Process finished with exit code 1
回溯(最近一次呼叫最后一次):
文件“/home/lord_hendrix17/PycharmProjects/P0/main.py”,第46行,在
输入_enc()
文件“/home/lord_hendrix17/PycharmProjects/P0/main.py”,第41行,输入附件
edata=data.get()
AttributeError:“非类型”对象没有属性“get”
进程已完成,退出代码为1

查看代码中的更改

仅代码的答案不是很有用,因为它要求我们逐行、逐字符地将代码与原始代码进行比较。如果你能简单描述一下你所做的更改,这个答案会更好。我所做的所有更改都有一个#!!最后,下次我会做得更好,谢谢。
from tkinter import *

root = Tk()
root.title("Encryptor")


def encrypt(sentence, key):
    #print(sentence)
    #print(key)
    asc_sentence = []
    asc_key = []
    encryp = []
    encrypted = ""

    for letter in key:
        le = ord(letter) - 17
        asc_key.append(le)
    asc_sum = sum(asc_key)

    for letter in sentence:
        lex = ord(letter) + asc_sum
        asc_sentence.append(lex)

    for i in asc_sentence:
        lconv = chr(i)
        encryp.append(lconv)
    for index in encryp:
        encrypted += index

    enc = Label(root, textvariable=encrypted)
    enc.pack()


def input_enc():
    edata=StringVar()#!!!
    epwd=StringVar()#!!!
    intro = Label(root, text="------------------------- Encrypt your Data----------------------")
    intro.pack()
    pwd_l = Label(root, text="Enter your Key to encrypt the data: ")
    pwd_l.pack()
    password = Entry(root, textvariable=epwd,width=25).pack()#!!!
    data_l = Label(root, text="Input the data You want to Encrypt: ")
    data_l.pack()
    data = Entry(root, textvariable=edata,width=25).pack()#!!!
    #edata = data.get()
    #epwd = password.get()
    submit = Button(root, text="Encrypt", command=lambda: encrypt(edata.get(), epwd.get()))#!!!
    submit.pack()

input_enc()
root.mainloop()