Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类中定义的Python调用函数_Python_Python 2.7_Tkinter - Fatal编程技术网

类中定义的Python调用函数

类中定义的Python调用函数,python,python-2.7,tkinter,Python,Python 2.7,Tkinter,所以我正在制作一个游戏,我正在使用Tkinter和Python2.7,我想将地图数据存储在文件中。我试图制作一个菜单来打开文件并设置为一个变量。我在定义Tkinter按钮上使用的函数时遇到问题 Tkinter窗口将打开,但当我单击按钮时,它会显示一个错误 代码: name错误:未定义全局名称“mapset” 另外,如何访问另一个文件中的映射中的数据变量(因此它将是映射.数据,右侧) #main.py from readfiles import * print maps.data Attrib

所以我正在制作一个游戏,我正在使用Tkinter和Python2.7,我想将地图数据存储在文件中。我试图制作一个菜单来打开文件并设置为一个变量。我在定义Tkinter按钮上使用的函数时遇到问题

Tkinter窗口将打开,但当我单击按钮时,它会显示一个错误

代码:

name错误:未定义全局名称“mapset”

另外,如何访问另一个文件中的
映射
中的
数据
变量(因此它将是
映射.数据
,右侧)

#main.py
from readfiles import *
print maps.data
AttributeError:type对象“maps”没有属性“data”

如果您需要任何其他信息,请告诉我。
另外,
print“新年快乐!”

这里有一个简单的GUI类,它将地图文件中的数据存储在
self.data
属性中

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

用于{0..5}中的i;do echo>“maps/map${i}.pvm”“map$i data”;完成
这是Python3代码。要在Python2上运行它,只需将Tkinter导入语句更改为
import Tkinter as tk
,并在其他导入语句之前添加
from\uuuuuuuu future\uuuuuuuu import print\u函数

我添加了一个
“打印数据”
,让我们可以测试我们是否正确加载了数据

将tkinter作为tk导入
导入操作系统
类Gui(对象):
定义初始化(self,mapspath):
self.data=None
root=tk.tk()
frame=tk.frame(根)
frame.pack()
标签(frame,text=“选择文件夹中的地图:”).pack()
对于os.listdir(mapspath)中的fbase:
如果fbase.endswith('.pvm'):
fname=os.path.join(mapspath,fbase)
#打印(fname)
按钮(框架,文本=fbase[:-4],
command=lambda fn=fname:self.read_map(fn)).pack()
按钮(frame,text=“Print data”,command=self.Print\u map).pack()
root.mainloop()
def read_映射(自身,fname):
将open(fname)作为f:
self.data=f.read()
def打印地图(自我):
打印(“当前地图:”,self.data)
图形用户界面(“地图”)

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

缩进正确吗?
mapset
maps
的属性吗?看起来像
def mapset(var):
并且它的主体需要再次缩进一次您永远不会调用
maps()
函数创建一个对象。而
self.data
应该是
self.data=something
。您发布的代码存在多个问题。正如Barmar提到的,您从未创建
maps
实例,而
maps.\uuu init\uuuuu
方法没有意义。
mapset
应该做什么?它支持吗另外,
widget.pack
.grid
方法返回
None
,因此
buttons=Frame(fselect).pack()
按钮设置为
None
,而您忘记了
.pack
标签
widget.Which“变量
数据
“你指的是什么?没有这样的变量
data
是您似乎希望在
maps
类中拥有的属性的名称,但您从未实际创建该类的实例,也没有为变量正确分配任何内容。我认为你的TK代码不是你遇到的主要问题。相反,它掩盖了您对OOP基本概念的困惑。试着读一遍,然后看看你是否能把它整理出来。
#main.py
from readfiles import *
print maps.data