类 互相交流
Classes interacting each other
我想让一个 class 通过函数与另一个交互。
单击时添加 1 的按钮。但是当我进行交互时,出现错误提示 Resources
尚未定义
这就是我正在尝试的,但是什么都没发生
from tkinter import *
class Caracteristicas:
def __init__(self,master):
self.caracteristicas = Frame(master)
self.caracteristicas.grid(row=1,column=0)
self.forca = Label(self.caracteristicas, text='FORÇA FÍSICA')
self.forca.grid(row=0,column=0)
self.show_forca = Label(self.caracteristicas,text='1')
self.show_forca.grid(row=0,column=1)
self.b_forca = Button(self.caracteristicas,text='+',command=self.ad_for)
self.b_forca.grid(row=0,column=2)
self.Forca = 1
def ad_for(self):
global Forca
self.Forca += 1
Vida = self.Forca + 10
self.show_forca['text'] = self.Forca
Recursos.show_ferimentos['text'] = Vida
class Recursos:
def __init__(self, master):
self.recursos = Frame(master)
self.recursos.grid(row=1,column=1)
self.ferimentos = Label(self.recursos, text='FERIMENTOS')
self.show_ferimentos = Label(self.recursos, text='10')
self.ferimentos.grid(row=0,column=0)
self.show_ferimentos.grid(row=1,column=0)
ficha = Tk()
a = Caracteristicas(ficha)
b = Recursos(ficha)
ficha.mainloop()
我想知道如何在Characteristics
class和Resources
class
之间进行交互
我设法解决了上一个问题,但是,另一个问题出现了。这是我的主程序,建议的解决方案在这种情况下不起作用。
from tkinter import *
from Caracteristicas import Caracteristicas
from Recursos import Recursos
ficha = Tk()
a = Caracteristicas(ficha)
b = Recursos(ficha)
ficha.mainloop()
在这种情况下,它们是要在主文件中使用的不同文档
如果您有两个 类 的实例,并且您需要其中一个的函数来修改数据或调用另一个的方法,您通常会希望将对另一个对象的引用传递到另一个对象中将与之互动。
在您的代码中,这可能意味着您应该将对 Recursos
实例的引用传递给 Caracteristicas
对象的构造函数,以便稍后使用。
这是一个非常简短的版本:
class Caracteristicas:
def __init__(self, master, resource):
self.resource = resource # save value for later
... # the rest of the constructor can be the same
def ad_for(self):
self.Forca += 1
Vida = self.Forca + 10
self.show_forca['text'] = self.Forca
self.resource.show_ferimentos['text'] = Vida # main change is here!
您还需要将创建对象的代码更改为:
b = Recursos(ficha)
a = Caracteristicas(ficha, b) # pass the reference to the resource object in
我想让一个 class 通过函数与另一个交互。
单击时添加 1 的按钮。但是当我进行交互时,出现错误提示 Resources
尚未定义
这就是我正在尝试的,但是什么都没发生
from tkinter import *
class Caracteristicas:
def __init__(self,master):
self.caracteristicas = Frame(master)
self.caracteristicas.grid(row=1,column=0)
self.forca = Label(self.caracteristicas, text='FORÇA FÍSICA')
self.forca.grid(row=0,column=0)
self.show_forca = Label(self.caracteristicas,text='1')
self.show_forca.grid(row=0,column=1)
self.b_forca = Button(self.caracteristicas,text='+',command=self.ad_for)
self.b_forca.grid(row=0,column=2)
self.Forca = 1
def ad_for(self):
global Forca
self.Forca += 1
Vida = self.Forca + 10
self.show_forca['text'] = self.Forca
Recursos.show_ferimentos['text'] = Vida
class Recursos:
def __init__(self, master):
self.recursos = Frame(master)
self.recursos.grid(row=1,column=1)
self.ferimentos = Label(self.recursos, text='FERIMENTOS')
self.show_ferimentos = Label(self.recursos, text='10')
self.ferimentos.grid(row=0,column=0)
self.show_ferimentos.grid(row=1,column=0)
ficha = Tk()
a = Caracteristicas(ficha)
b = Recursos(ficha)
ficha.mainloop()
我想知道如何在Characteristics
class和Resources
class
我设法解决了上一个问题,但是,另一个问题出现了。这是我的主程序,建议的解决方案在这种情况下不起作用。
from tkinter import *
from Caracteristicas import Caracteristicas
from Recursos import Recursos
ficha = Tk()
a = Caracteristicas(ficha)
b = Recursos(ficha)
ficha.mainloop()
在这种情况下,它们是要在主文件中使用的不同文档
如果您有两个 类 的实例,并且您需要其中一个的函数来修改数据或调用另一个的方法,您通常会希望将对另一个对象的引用传递到另一个对象中将与之互动。
在您的代码中,这可能意味着您应该将对 Recursos
实例的引用传递给 Caracteristicas
对象的构造函数,以便稍后使用。
这是一个非常简短的版本:
class Caracteristicas:
def __init__(self, master, resource):
self.resource = resource # save value for later
... # the rest of the constructor can be the same
def ad_for(self):
self.Forca += 1
Vida = self.Forca + 10
self.show_forca['text'] = self.Forca
self.resource.show_ferimentos['text'] = Vida # main change is here!
您还需要将创建对象的代码更改为:
b = Recursos(ficha)
a = Caracteristicas(ficha, b) # pass the reference to the resource object in