首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >__init__()缺少参数:‘校验按钮’- Python

__init__()缺少参数:‘校验按钮’- Python
EN

Stack Overflow用户
提问于 2016-11-02 12:24:36
回答 1查看 139关注 0票数 0

我的构造师有问题。我得到错误__init__()缺少一个必需的位置参数:‘校验按钮’

更新:

这是我的主要文件:

代码语言:javascript
运行
复制
from GUI_Rootmodule import GUI_Root

gui_root = GUI_Root()

这是我的根模块文件:

代码语言:javascript
运行
复制
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()

这是我的单元:

代码语言:javascript
运行
复制
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(self,master,校验按钮)中的一个参数

有人能解释我在这里和/或做错了什么吗?

更新2:没有校验按钮代码的,其余部分工作,并显示一个简单的GUI。现在还不清楚我到底在哪里遗漏了校验按钮的参数

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-02 12:35:01

您没有在这一行中提供所有必需的输入参数:

代码语言:javascript
运行
复制
 Unit(rootframe)

您提供了master,但缺少校验按钮。类应该使用所有必需的输入参数实例化:

代码语言:javascript
运行
复制
Unit(master, checkbutton)

或者,您可以为输入提供默认值,并相应地调整函数中的代码:

代码语言:javascript
运行
复制
class Unit(master=None,checkbutton=None):
    ...

但是,看起来您可能根本不打算传递一个校验按钮变量,而只是简单地包含一个tkinter Checkbutton。如果这就是你想要的,我已经给出了下面的代码。我避免了星导入from tkinter import *,这样对象的来源就更加清晰了。我还将事物合并到同一个模块中,所以整个过程按原样运行。

代码语言:javascript
运行
复制
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()        
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40379903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档