【发布时间】:2017-05-10 10:55:43
【问题描述】:
我想从cpopup 类调用reflist() 函数。我不确定该怎么做。在self.dismiss() 行之后,我尝试了很多方法。
narr.reflist() 感觉它应该可以工作,但事实并非如此。我想可能是因为我需要引用类的实例而不是类本身,但我不太确定实例名称是什么以及如何引用它。
narr().reflist() 更成功一点,因为它不会出现错误。但结果出乎意料(什么也没发生)。也许它确实有效,但我只是还不了解类中的变量范围。
execfile("drawinglist.py")
dlists = []
dsource = []
class cpopup(Popup):
filechooser = ObjectProperty(None)
def on_press_dismiss(self, *args):
self.dismiss()
#return False
def load(self, path, filename):
fdid = self.id
bodycon = ObjectProperty(None)
if fdid == "Narr":
print parseNarrative(filename)
dsource.append(filename)
dlists.append(parseNarrative(filename))
self.dismiss()
narr.reflist()
if fdid == "Dir":
print parseFolder(filename, True)
self.dismiss()
if fdid == "Dl":
print parseDrawinglist(filename)
self.dismiss()
class narr(BoxLayout):
bodycon = ObjectProperty(None)
dlists = ObjectProperty(None)
def loadNarr(self):
pop = cpopup()
pop.title="Select a file to generate Drawing List from"
pop.id = "Narr"
pop.filechooser.multiselect = True
pop.open()
def loadDir(self):
pop = cpopup()
pop.title="Select a Directory to load drawing list from."
pop.id = "Dir"
pop.filechooser.dirselect = True
pop.open()
def loadDl(self):
pop = cpopup()
pop.title="Select a drawing list (.pdfs) to generate list from"
pop.id = "Dl"
pop.filechooser.multiselect = True
pop.open()
def reflist(self):
words = ""
source = ""
index = []
for d in dlists:
for a in d:
dwg = str(a)
if dwg not in index:
index.append(dwg)
for l in dsource:
fl = l[0]
fl = fl.split("/")
fl = fl[-1]
source = source + fl +"\n"
self.dlists.text = source
self.bodycon.text = words
class narrApp(App):
def build(self):
return narr()
if __name__=="__main__":
narrApp().run()
【问题讨论】:
标签: python function class kivy