首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python tkinter,缺少位置参数错误

Python tkinter,缺少位置参数错误
EN

Stack Overflow用户
提问于 2021-12-27 13:37:53
回答 1查看 36关注 0票数 0

我正在尝试使用Tkinter开发一个简单的python工具,我已经创建了3个文件,下面是代码。这些文件是GUI.py

代码语言:javascript
运行
复制
from tkinter import *
from tkinter.messagebox import *
import tkinter.ttk as ttk
import versionTab
import logclass

class GUI(Tk):
    def __init__(self, parent):
        self.parent = parent
        parent.title("Tool")
        parent.geometry('695x600+100+100')
        self.frame = Frame(parent,bd=5).grid()
        self.infoLabel = LabelFrame(self.frame,text="Information",height=100,width=100)
        self.version = versionTab.versionTab(self.infoLabel)
        self.infoLabel.grid(row=1,column=0,columnspan =2,padx=8,pady=2,sticky = W)

        self.logLabel = LabelFrame(self.frame,height=1000,width=1000)
        self.Log = logclass.debuglog(self.logLabel)
        self.logLabel.grid(row=4,column=0,columnspan =2,padx=8,pady=2,sticky = W)

root = Tk()
gui = GUI(root)
root.resizable(0,0)
root.mainloop()

下一个文件是versionTab.py

代码语言:javascript
运行
复制
from tkinter import *
from tkinter.messagebox import *
import logclass

class versionTab():
    def __init__(self,frame):
        self.firmwareFrame =LabelFrame(frame,height=15,width=100)
        self.firmwareversion_B = Button(self.firmwareFrame, text=" Version",command= self.getFW).grid(row=0,column=0,padx=2,pady=5)
        self.versionText_Entry = Entry(self.firmwareFrame,width=10)
        self.versionText_Entry.configure(state ='readonly')
        self.versionText_Entry.grid(row=0,column=1,padx=4,pady=5)
        self.firmwareFrame.grid(row=1,column=0,columnspan =2,padx=2,pady=2,sticky = W)

    def getFW(self):
        logclass.debuglog.logst(self,"12344")

最后一个文件是logclass.py

代码语言:javascript
运行
复制
from tkinter import *
import tkinter.ttk as ttk
from datetime import datetime

class debuglog():
    def __init__(self,frame):
        self.debuglog = LabelFrame(frame,text = "Log",height=15,width=100)
        self.log      = Text(self.debuglog,height = 20, width = 80)
        self.scrollb  = Scrollbar(self.debuglog, orient=VERTICAL)
        self.scrollb.config(command = self.log.yview) 
        self.log.config(yscrollcommand = self.scrollb.set)
        self.log.grid(column=0, row=0)
        self.scrollb.grid(column=1, row=0, sticky=W)
        self.debuglog.pack()

    def logst(self,msg, level=None):
        print('logclass')
        self.log.insert(insert('end', msg + '\n'))

    def exitWindow(self):

        print('exit..')

当我运行我的GUI.py文件时,我能够生成tool.The工具将显示一个简单的按钮version.when,我单击工具上的version按钮,它抛出下面的错误

代码语言:javascript
运行
复制
versionTab.py", line 15, in getFW
    logclass.debuglog.logst(self)
TypeError: logst() missing 1 required positional argument: 'msg'

有人能告诉我为什么不能从versiontab文件中调用logst吗?

EN

回答 1

Stack Overflow用户

发布于 2021-12-27 14:16:47

您似乎试图在类logst上调用方法debuglog。这是行不通的,因为"logst“不是一个静态的方法。您需要创建一个debuglog实例,以便在其上调用logst方法。

我也不明白为什么在调用self时将它传递给logst函数。

versionTab类的构造函数中,可以添加self._logger = logclass.debuglog(),然后调用self._logger.logst而不是logclass.debuglog.logst

也许可以看看静态方法和非静态方法之间的区别?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70496215

复制
相关文章

相似问题

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