![](/img/trans.png)
[英]I'm getting a weird error trying to run tests using pytest for FastAPI + Gino app
[英]I'm trying to develop tkinter app using oops but getting this error
我刚刚开始练习 Oops 概念。我正在观看简单的 Oops 视频并尝试对 tkinter 问题使用应用步骤。 我不知道为什么会收到此错误。
from tkinter import *
from tkinter import font as tkFont
top = Tk()
top.minsize(width=1280,height=720)
top.maxsize(width=721,height=521)
class Framesone:
def __init__(self, x1, y1, frame1, text1, x2, y2):
self.stframe = LabelFrame(top, width=300, height=200, highlightcolor="grey", bd=5)
self.stframe.place(x=x1, y=y1)
self.label1 = Label(frame1, text=text1)
self.label1.config(font=("Times", "25", "bold", "italic"))
self.label1.place(x=x2, y=y2)
Framesone(100,200,Framesone().stframe,"HI",20,30)
top.mainloop()
OUTPUT
Traceback (most recent call last):
File "E:/python projects my/Basic Programs/MQC FIt Software.py", line 14, in <module>
Framesone(100,200,Framesone().stframe,"HI",20,30)
TypeError: __init__() missing 6 required positional arguments: 'x1', 'y1', 'frame1', 'text1', 'x2', and 'y2'
Process finished with exit code 1
Framesone(100,200,Framesone().stframe,"HI",20,30)
Framesone().stframe
在没有 arguments 的情况下调用__init__
function。 每次调用MyClass()
时,都会调用__init__
function ,因为 class 会被调用。
当您调用Framesone().stframe
时,代码首先调用 Framesone() 的__init__()
Framesone()
,但没有任何 arguments。 在声明 object 本身之前,您正在使用对象的实例变量。
由于您已经在 object 中定义了stframe
,您可以简单地用self.stframe
替换对frame1
的引用,因为在您的示例中这些是相同的。
class Framesone:
def __init__(self, x1, y1, text1, x2, y2):
self.stframe = LabelFrame(top, width=300, height=200, highlightcolor="grey", bd=5)
self.stframe.place(x=x1, y=y1)
self.label1 = Label(self.stframe, text=text1)
self.label1.config(font=("Times", "25", "bold", "italic"))
self.label1.place(x=x2, y=y2)
Framesone(100, 200, "HI", 20, 30)
如果您确实想以现在使用的方式使用此stframe
,您可以将stframe
声明移到__init__()
function 之外。 这会将stframe
从实例变量更改为 static 变量。 这将允许您从 class 外部调用Framesone.stframe
,而无需调用其构造函数。 (请注意,您现在调用Framesone
没有()
表示您正在使用其 static class 变量而不是实例变量。)
class Framesone:
stframe = LabelFrame(top, width=300, height=200, highlightcolor="grey", bd=5)
def __init__(self, x1, y1, frame1, text1, x2, y2):
self.stframe.place(x=x1, y=y1)
self.label1 = Label(self.frame1, text=text1)
self.label1.config(font=("Times", "25", "bold", "italic"))
self.label1.place(x=x2, y=y2)
Framesone(100, 200, Framesone.stframe, "HI", 20, 30)
编辑:从 class static 变量中删除self
。 为了更好地解释实例与 static 变量,稍微更改了措辞
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.