python-3.x - AttributeError:“Demo1”对象没有属性“文本框”
问题描述
我正在从第一个类(Demo1 )调用一个函数( fun1 ),并从调用函数(fun1 )调用另一个类(Demo2 )的另一个函数(data )来发送结果,但是我在尝试时收到以下错误在文本框中得到该结果。我怀疑这是因为阶级自我冲突。你能帮我解决这个问题吗?
请找到代码:
from tkinter import ttk
import tkinter as tk
from tkinter import *
def fun1(self,name):
result="check"
Demo2.data(result)
def cal(master):
master = Demo2(master)
class Demo1:
def __init__(self, master):
self.master = master
button=tk.Button(self.master, text="check",anchor="w",command=lambda :fun1(self,"abc") )
button.grid(row=0,column=1)
button.config(command=lambda button=button: [cal(self.master),fun1(self,"abc")])
class Demo2:
def __init__(self, master):
self.master = master
self.textbox=tk.Text(self.master,font=('Calibri',12))
self.textbox.grid(row=0,column=1)
def data(self,data):
self.textbox.insert('end',data)
def main():
root = tk.Tk()
app = Demo1(root)
root.mainloop()
if __name__ == '__main__':
main()
错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:/Users/Desktop/New folder/demo/che.py", line 16, in <lambda>
self.button=tk.Button(self.master, text="check",anchor="w",command=lambda :fun1(self,"abc") )
File "C:/Users/Desktop/New folder/demo/che.py", line 8, in fun1
Demo2.data(self,result)
File "C:/Users/Desktop/New folder/demo/che.py", line 29, in data
self.textbox.insert('end',data) #Error
AttributeError: 'Demo1' object has no attribute 'textbox'
解决方案
在这里,您可以稍微修复一下您的代码:
from tkinter import ttk
import tkinter as tk
from tkinter import *
def fun1(parent, name):
result = "check"
master = Demo2(parent)
master.data(result)
class Demo1:
def __init__(self, master):
self.master = master
button = tk.Button(self.master, text="check", anchor="w", command=lambda: fun1(self.master, "abc"))
button.grid(row=0, column=1)
class Demo2:
def __init__(self, master):
self.master = master
self.textbox = tk.Text(self.master, font=('Calibri', 12))
self.textbox.grid(row=0, column=1)
def data(self, data):
self.textbox.insert('end', data)
def main():
root = tk.Tk()
Demo1(root)
root.mainloop()
if __name__ == '__main__':
main()
你也没有使用名字fun1()
推荐阅读
- r - 如何计算不同比率的 npv(净现值)?
- python - (排列的)列表的唯一组合
- flutter - 没有为类型“_CreateEventState”定义方法“FormBuilderDateTimePicker”
- python - 使用 Decompose 删除空标签
- python - 如何使用测地线创建距离表
- rust - 我可以在异步递归函数中使用 await 吗?
- c# - AndroidClientHandler 的问题:是否可以编辑 src/Mono.Android/Xamarin.Android.Net/AndroidClientHandler.cs?
- java - 在哪里可以找到 spring-data-elasticsearch 配置属性的参考?
- javascript - 未捕获的类型错误:无法访问属性“onclick”,特定页面上的模式框
- android - 通过数据绑定使用时 OnScrollListener 不起作用