繁体   English   中英

类型错误:缺少 3 个必需的位置 arguments

[英]TypeError: missing 3 required positional arguments

我正在做一个编码 class 作业,我试图编写一些代码来告诉你任何给定日期是星期几。

#importing tkinter and creating a window pop up
import tkinter

window = tkinter.Tk()



#titling the window

window.title("day of the week on any given date")


#add widgets here

canvas = tkinter.Canvas(window, bd=3, height=500, width=500)

#making a border
xy_black = 500, 500, 500, 10, 10, 10, 10, 500
border1 = canvas.create_polygon(xy_black, fill="black")
xy_white = 495, 495, 495, 15, 15, 15, 15, 495
border2 = canvas.create_polygon(xy_white, fill="white")

canvas.pack()
#year
entry1 = tkinter.Entry (window) 
canvas.create_window(150, 70, window=entry1)

labelyear = tkinter.Label(window, text= 'Enter any year' ,font=('helvetica', 10))
canvas.create_window(110, 40, window=labelyear)

#month
entry2 = tkinter.Entry (window) 
canvas.create_window(150, 140, window=entry2)

labelmonth = tkinter.Label(window, text= 'Enter any month (0-12)' ,font=('helvetica', 10))
canvas.create_window(110, 110, window=labelmonth)

#day
entry3 = tkinter.Entry (window)
canvas.create_window(250, 70, window=entry3)

labelday = tkinter.Label(window, text= 'Enter a day' ,font=('helvetica', 10))
canvas.create_window(220, 40, window=labelday)





def getDay(d, m, y):
    y = entry1.get()
    x1 = int(y)
    m = entry2.get()
    x2 = int(m)
    d = entry3.get()
    x3 = int(d)

    t = [ 0, 3, 2, 5, 0, 3,
          5, 1, 4, 6, 2, 4 ]
    y -= m < 3
    return (( x1 + int(x1 / 4) - int(x1 / 100)
             + int(x1 / 400) + t[x2 - 1] + x3) % 7)
 

    day = getDay(x3, x2, x1)
    print(day)


button1 = tkinter.Button(text= 'submit', command=getDay)
canvas.create_window(200, 180, window=button1)

我一直收到这个错误

Exception in Tkinter callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 1892, in __call__
    return self.func(*args)
TypeError: getDay() missing 3 required positional arguments: 'd', 'm', and 'y'

我该如何解决错误? 我试过在很多地方添加 arguments,甚至无法弄清楚错误的含义。 无论如何,我不知道还能说什么,但我的帖子主要是代码,所以它让我添加更多细节

当您将 get_day function 作为 Button 部分中的命令传递时,当时它只调用 function 并且您没有将任何 arguments 传递给它所以基本上您必须使用 partial from functools import the partial 并且您应该必须传递命令使用部分 like as

button1 = tkinter.Button(text='submit', command=partial(get_day,x1,x2,x3)) 

您的 function 被定义为需要三个参数:

def getDay(d, m, y):

就像错误所说的那样,你在这里用零参数调用它,因为你没有指定任何 arguments 作为command定义的一部分:

button1 = tkinter.Button(text= 'submit', command=getDay)

如果您希望能够调用带有或不带参数的 function,请将它们设为可选:

def getDay(d=None, m=None, y=None):
    d = d if d is not None else int(entry3.get())
    m = m if m is not None else int(entry2.get())
    y = y if y is not None else int(entry1.get())

    ...

或者,永远不需要参数并始终从条目小部件中获取值:

def getDay():
    d = int(entry3.get())
    m = int(entry2.get())
    y = int(entry1.get())

    ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM