python - 类型错误 : get() takes 1 positional argument but 3 were given

标签 python tkinter

此代码将通过 tkinter 运行基本数据输入窗口,这将保存用户的输入。当我运行代码并用鼠标单击“提交”按钮时,出现错误:

print ("Información Adicional: {}".format(self.entry_name.get(1.0, "end")))

TypeError: get() takes 1 positional argument but 3 were given

这是代码:

import tkinter
from tkinter import *
from tkinter import ttk
from tkinter import messagebox

class ImprintPlusApp:

    def __init__(self, master):
        self.frame_header = ttk.Frame(master)
        self.frame_header.pack()

        ttk.Label(self.frame_header, text = "Bienvenidos a Imprint Plus Manager")

        self.frame_crearorden = ttk.Frame(master)
        self.frame_crearorden.pack()

        ttk.Label(self.frame_crearorden, text = "Nombre").grid(row = 0, column = 0, padx = 5)
        ttk.Label(self.frame_crearorden, text = "Email").grid(row = 2, column = 0, padx = 5)
        ttk.Label(self.frame_crearorden, text = "Numero Cel/Tel").grid(row = 4, column = 0, padx = 5)
        ttk.Label(self.frame_crearorden, text = "Información Adicional").grid(row = 6, column = 0, padx = 5)

        self.entry_name = ttk.Entry(self.frame_crearorden, width = 24)
        self.entry_email = ttk.Entry(self.frame_crearorden, width = 24)
        self.entry_numtc = ttk.Entry(self.frame_crearorden, width = 24)
        self.entry_addinf = Text(self.frame_crearorden, width = 50, height = 10)

        self.entry_name.grid(row = 0, column = 1, padx = 5)
        self.entry_email.grid(row = 2, column = 1, padx = 5)
        self.entry_numtc.grid(row = 4, column = 1, padx = 5)
        self.entry_addinf.grid(row = 7, column = 0, columnspan = 2, padx = 5)

        ttk.Button(self.frame_crearorden, text = "Submit", command = self.submit).grid(row = 8, column = 1,columnspan = 1, padx = 5)
        ttk.Button(self.frame_crearorden, text = "Clear", command = self.clear).grid(row = 8, columnspan = 1, padx = 5)

    def submit(self):
        print ("Nombre: {}".format(self.entry_name.get()))
        print ("Email: {}".format(self.entry_name.get()))
        print ("Num Cel/Tel: {}".format(self.entry_name.get()))
        print ("Información Adicional: {}".format(self.entry_name.get(1.0, "end")))
        self.clear()
        messagebox.showinfo(title = "Orden #", message = "Orden Guardada")

    def clear(self):
        self.entry_name.delete(0, "end")
        self.entry_email.delete(0, "end")
        self.entry_numtc.delete(0, "end")
        self.entry_addinf.delete(1.0, "end")


def main():
    root = Tk()
    app = ImprintPlusApp(root)
    root.mainloop()

if __name__ == '__main__':
    main() 

导致此错误的 get() 函数发生了什么?

最佳答案

我不确定你想做什么,但这是导致错误的行,错误消息清楚地指出了这一点-

print ("Información Adicional: {}".format(self.entry_name.get(1.0, "end")))

你需要做-

print ("Información Adicional: {}".format(self.entry_name.get()))

因为 Tkinter.Entry 类的 get() 函数不接受任何参数。

又看了下代码,好像逻辑上有问题——

def submit(self):
        print ("Nombre: {}".format(self.entry_name.get()))
        print ("Email: {}".format(self.entry_name.get()))
        print ("Num Cel/Tel: {}".format(self.entry_name.get()))
        print ("Información Adicional: {}".format(self.entry_name.get(1.0, "end")))

您不想从不同的 Entry 对象中获取每个条目吗?像这样 -

def submit(self):
        print ("Nombre: {}".format(self.entry_name.get()))
        print ("Email: {}".format(self.entry_email.get()))
        print ("Num Cel/Tel: {}".format(self.entry_numtc.get()))
        print ("Información Adicional: {}".format(self.entry_addinf.get()))

关于python - 类型错误 : get() takes 1 positional argument but 3 were given,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30875590/

相关文章:

Python:将列表转换为字典,其中键是列表元素的索引

python - matplotlib 中的误差线显示在其他曲线上

Python - 按照命令写入文件

python - 检索和使用 tkinter 组合框选择

python - 为什么 tkinter 键事件 <Tab> 的优先级高于 tkinter 键事件 <key>?

python - Django 使用 ANSI_X3.4-1968 编码而不是 UTF-8

python - 使用 CSS 选择器查找某些 <div> 标签时遇到问题

python - 如何在 tkinter 中使用文本框并使用值? python 3

python - 列中按钮之间的垂直填充

python - 如何在 Windows 7 上安装适用于 python 2.7 的 tkinter 或 Tcl?