我正在尝试使用Tkinter开发一个简单的python工具,我已经创建了3个文件,下面是代码。这些文件是GUI.py
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
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
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按钮,它抛出下面的错误
versionTab.py", line 15, in getFW
logclass.debuglog.logst(self)
TypeError: logst() missing 1 required positional argument: 'msg'有人能告诉我为什么不能从versiontab文件中调用logst吗?
发布于 2021-12-27 14:16:47
您似乎试图在类logst上调用方法debuglog。这是行不通的,因为"logst“不是一个静态的方法。您需要创建一个debuglog实例,以便在其上调用logst方法。
我也不明白为什么在调用self时将它传递给logst函数。
在versionTab类的构造函数中,可以添加self._logger = logclass.debuglog(),然后调用self._logger.logst而不是logclass.debuglog.logst。
也许可以看看静态方法和非静态方法之间的区别?
https://stackoverflow.com/questions/70496215
复制相似问题