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
类和Resources
类之间进行交互
我设法解决了先前的问题,但是又出现了另一个问题。这是我的主程序,建议的解决方案在这种情况下不起作用。
from tkinter import *
from Caracteristicas import Caracteristicas
from Recursos import Recursos
ficha = Tk()
a = Caracteristicas(ficha)
b = Recursos(ficha)
ficha.mainloop()
如果它们是要在主文件中使用的不同文件
答案 0 :(得分:1)
如果您有两个类的实例,并且其中一个需要函数来修改数据或在另一个上调用方法,则通常需要将对另一个对象的引用传递给要与之交互的对象
在您的代码中,这可能意味着您应该将对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