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

匿名 (未验证) 提交于 2019-12-03 02:34:02

问题:

This code will run a basic data input window through tkinter which will save the user's inputs. When i run the code and mouse click the Submit button I get the error:

print ("Información Adicional: {}".format(self.entry_name.get(1.0, "end")))  TypeError: get() takes 1 positional argument but 3 were given 

This is the code:

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()  

What is happening with the get() function that causes this error?

回答1:

I am not sure what you want to do, but this is the line causing the error, as clearly indicated by the error message -

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

You need to do -

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

Because Tkinter.Entry class' get() function does not take any arguments.

Also looking at the code, there seems to be a logical issue -

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"))) 

Don't you want to get each entry from different Entry objects? Like this -

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())) 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!