Python调用类中定义的函数

2024-10-03 13:30:43 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我正在制作一个游戏,我使用的是Tkinter和Python2.7,我想把地图数据存储在文件中。我正在尝试创建一个菜单来打开文件并设置为变量。我很难定义要在Tkinter按钮上使用的函数。在

Tkinter窗口打开,但当我单击按钮时,它给出一个错误。在

代码:

#readfiles.py
class maps(object):
    def __init__(self):
        self.data
    def mapset(var):
        data = var
fselect = Tk()
...
buttons = Frame(fselect).pack()
Label(fselect, text="Select maps in folder:")
for i in listdir('./maps/'):
    if i[-4:] == ".pvm":
        Button(buttons, text=i[:-4], command=lambda i=i: mapset(open('./maps/'+i, 'r').read())).pack()

NameError: global name 'mapset' is not defined

另外,我如何访问另一个文件中的data变量(所以它应该是maps.data,对不对)?在

^{pr2}$

AttributeError: type object 'maps' has no attribute 'data'

如果你需要更多的信息,请告诉我。 另外,print "Happy New Years!


Tags: 文件textinselfdataobjecttkintervar
1条回答
网友
1楼 · 发布于 2024-10-03 13:30:43

下面是一个简单的GUI类,它将映射文件中的数据存储在self.data属性中。在

为了测试这段代码,我使用Bash命令创建了一组简单的文本文件:

for i in {0..5}; do echo >"maps/map${i}.pvm" "Map $i data"; done

这是python3的代码。要在python2上运行它,只需将Tkinter import语句更改为import Tkinter as tk,并在其他import语句之前添加from __future__ import print_function。在

我添加了一个"Print data",它让我们测试我们是否真正正确地加载了数据。在

^{pr2}$

除非这些地图很大,否则一次存储所有地图可能会更方便。您可以将它们存储在一个列表中,但是最好将它们存储在字典中,使用基名称(减去'.pvm'扩展名)作为键。在

相关问题 更多 >