我的构造函数存在问题。我收到错误 __ init __()缺少1个必需的位置参数:' checkbutton'
更新
这是我的主要文件:
from GUI_Rootmodule import GUI_Root
gui_root = GUI_Root()
这是我的rootmodule文件:
from GUI_Unitmodule import Unit
from tkinter import *
class GUI_Root:
def __init__(self):
print("hoi")
window = Tk()
window.title("Project: Embedded Systems")
rootframe = Frame(window, width=1800, height=750)
rootframe.pack()
Unit(rootframe)
window.mainloop()
这是我的单元模块:
from tkinter import *
class Unit:
def __init__(self, master, checkbutton):
self.frame1 = Frame(master) #Frame voor labels, buttons, entries
self.frame1.pack()
# Checkbutton #
print("test frame")
self.var1 = IntVar()
self.checkbutton = checkbutton(self.frame1, text="Automatisch", variable=self.var1, onvalue= 1, offvalue= 0, pady=20).grid(row=0, column=0, sticky=E)
print("test checkbutton")
# Labels #
self.Extend_Label = Label(self.frame1, text="Uitrol afstand", pady=20).grid(row=2, column=0, sticky=E)
self.Retract_Label = Label(self.frame1, text="Inrol afstand", pady=20).grid(row=3, column=0, sticky=E)
self.Temperture_Label = Label(self.frame1, text="Temperatuur Trigger", pady=20).grid(row=4, column=0, sticky=E)
self.LightIntensity_Label = Label(self.frame1, text="Lichtintensiteit Trigger", pady=20).grid(row=5, column=0, sticky=E)
print("test label")
# Entry #
self.Extend_Entry = Entry(self.frame1).grid(row=2, column=1, sticky=E)
self.Retract_Entry = Entry(self.frame1).grid(row=3, column=1, sticky=E)
self.Temperture_Entry = Entry(self.frame1).grid(row=4, column=1, sticky=E)
self.LightIntensity_Entry = Entry(self.frame1).grid(row=5, column=1, sticky=E)
print("test entry")
# Buttons
self.A = Button(self.frame1, text ="Inrollen", padx=10, pady=20).grid(row=6, column=0)
self.B = Button(self.frame1, text ="Uitrollen", padx=10, pady=20).grid(row=6, column=1)
print("test button")
我试图参与其中,但它一直在说我错过了我在 init(自我,主人,支票)中加入的论点
有人可以解释我在这里失踪和/或做错了吗?
更新2:如果没有检查按钮代码,其余的工作并显示一个简单的GUI。我还不清楚我在哪里错过了检查按钮的参数
答案 0 :(得分:1)
您没有在此行提供所有必需的输入参数:
Unit(rootframe)
您提供了master
,但缺少检查按钮。该类应该使用所有必需的输入参数进行实例化:
Unit(master, checkbutton)
或者,您可以为输入提供默认值,并相应地调整函数中的代码:
class Unit(master=None,checkbutton=None):
...
然而,看起来你可能根本不打算传入一个checkbutton变量,只是想包含一个tkinter Checkbutton
。如果这是你之后的事情,我已经在下面提供了相应的代码。我避免了星号导入from tkinter import *
,因此对象的来源更加清晰。我还把东西组合到同一个模块中,所以整个过程按原样运行。
import tkinter as tk
def main():
gui_root = GUI_Root()
class GUI_Root:
def __init__(self):
print("hoi")
window = tk.Tk()
window.title("Project: Embedded Systems")
rootframe = tk.Frame(window, width=1800, height=750)
rootframe.pack()
Unit(rootframe)
window.mainloop()
class Unit:
def __init__(self, master):
self.frame1 = tk.Frame(master) #Frame voor labels, buttons, entries
self.frame1.pack()
# Checkbutton #
print("test frame")
self.var1 = tk.IntVar()
self.checkbutton = tk.Checkbutton(self.frame1, text="Automatisch", variable=self.var1, onvalue= 1, offvalue= 0, pady=20).grid(row=0, column=0, sticky=tk.E)
print("test checkbutton")
# Labels #
self.Extend_Label = tk.Label(self.frame1, text="Uitrol afstand", pady=20).grid(row=2, column=0, sticky=tk.E)
self.Retract_Label = tk.Label(self.frame1, text="Inrol afstand", pady=20).grid(row=3, column=0, sticky=tk.E)
self.Temperture_Label = tk.Label(self.frame1, text="Temperatuur Trigger", pady=20).grid(row=4, column=0, sticky=tk.E)
self.LightIntensity_Label = tk.Label(self.frame1, text="Lichtintensiteit Trigger", pady=20).grid(row=5, column=0, sticky=tk.E)
print("test label")
# Entry #
self.Extend_Entry = tk.Entry(self.frame1).grid(row=2, column=1, sticky=tk.E)
self.Retract_Entry = tk.Entry(self.frame1).grid(row=3, column=1, sticky=tk.E)
self.Temperture_Entry = tk.Entry(self.frame1).grid(row=4, column=1, sticky=tk.E)
self.LightIntensity_Entry = tk.Entry(self.frame1).grid(row=5, column=1, sticky=tk.E)
print("test entry")
# Buttons
self.A = tk.Button(self.frame1, text ="Inrollen", padx=10, pady=20).grid(row=6, column=0)
self.B = tk.Button(self.frame1, text ="Uitrollen", padx=10, pady=20).grid(row=6, column=1)
print("test button")
if __name__ == '__main__':
main()