【发布时间】:2018-11-28 11:59:54
【问题描述】:
我想创建一个按钮,该按钮使用来自其他类的函数 (SaveFile),但它会引发 TypeError。
"TypeError: SaveFile() missing 1 required positional argument: 'self'"
我的代码是:
import tkinter as tk
class App1(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
tk.Button(self, text="Browse", command=self.SaveFile).grid(row=4, column=4)
self.t1 = tk.Text(self, height=1, width=40, font="Times 9")
self.t1.grid(row=2, column=3)
def SaveFile(self):
global name2
name2 = asksaveasfilename(initialdir="\\", filetypes=(("Html Files", "*.html"),("All Files","*.*")),
title = "Output path.")
self.t1.delete("1.0", tk.END)
self.t1.insert(tk.END, name2)
class App2(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.b1 = tk.Button(self, text="Browse", command=App1.SaveFile)
self.b1.grid(row=2, column=4)
【问题讨论】:
-
您正在尝试通过类引用调用实例方法(需要类的实例存在),例如您需要创建一个 App1
app1_inst = App1(parent, controller)的实例并告诉您的 app2 实例,以便 app2 可以调用app1_inst.SaveFile -
我应该在哪里输入? App1的init函数还是类外?请你写更具体的好吗?
标签: python-3.x oop tkinter