2015-10-16 199 views
0

嘿家伙我想使用我的函数在另一个窗口中的一个类的函数中获取的目录。我想将选择的目录传递给弹出窗口,以便显示所有文件。任何帮助将apprciatedPYQT将功能从一个类传递到另一个窗口

class createedditConvertorpage(QtGui.QMainWindow): 
     def __init__(self,parent = None): 
      QtGui.QWidget.__init__(self, parent) 


    def selectFilecsvtoxml(self): 

      directory = QtGui.QFileDialog.getExistingDirectory(self, "Pick a folder") 
      print directory 
      self.listDirPath.setText(directory) 

      for file_name in os.listdir(directory): 
       if not file_name.startswith("."): 

        print (file_name) + " this is selectFilcestoxml" 
      self.directory = directory 
      return directory 

class readoutWindow(QtGui.QDialog): 
    def openTxt(self): 
     directoryFile = createedditConvertorpage() 
     directoryFile.selectFilecsvtoxml() 
     print "this s open text" 
     print str(directoryFile) 
     for file_name in directoryFile: 
      if file_name.endswith(".txt"): 


       print (file_name) + " this is txt file" 

    File "/home/ed/Development/Python/Workmain/windows.py", line 1425, in home 
    self.openTxt() 
    File "/home/ed/Development/Python/Workmain/windows.py", line 1442, in openTxt 
    for file_name in directoryFile: 
TypeError: 'createedditConvertorpage' object is not iterable 

回答

2

在你的代码不采取返回值到一个变量,你刚才初始化对象directoryFilecreateedditConvertorpage类并从该类叫你selectFilecsvtoxml功能。

改变的代码:

class createedditConvertorpage(QtGui.QMainWindow): 
    def __init__(self,parent = None): 
     QtGui.QWidget.__init__(self, parent) 


def selectFilecsvtoxml(self): 

     directory = QtGui.QFileDialog.getExistingDirectory(self, "Pick a folder") 
     print directory 
     self.listDirPath.setText(directory) 

     for file_name in os.listdir(directory): 
      if not file_name.startswith("."): 

       print (file_name) + " this is selectFilcestoxml" 
     self.directory = directory 
     return directory 

class readoutWindow(QtGui.QDialog): 
def openTxt(self): 
    directoryFile = createedditConvertorpage() 
    dir1=directoryFile.selectFilecsvtoxml() 
    print "this s open text" 
    print str(dir1) 
    for file_name in dir1: 
     if file_name.endswith(".txt"): 
      print (file_name) + " this is txt file" 

我已经指派返回目录变量DIR1。

请检查该解决您的问题

+0

你的回答很近,给你信用 – Anekdotin

0

PyQt的是关于让正确的路径,往往你必须拐杖代码非常finnicky。这看起来很凌乱,但这里是答案

def openTxt(self): 
    directoryFile = createedditConvertorpage() 
    dir1=directoryFile.selectFilecsvtoxml() 
    print "this s open text" 
    print str(dir1) + "this is directorry of opentxt" 
    os.chdir(dir1) 
    print os.getcwd()+ " this is directory before looking for txt" 
    files = [f for f in os.listdir('.') if os.path.isfile(f)] 
    for file_name in files: 

     if file_name.endswith(".txt"): 
      print dir1 + "/" + (file_name) + " this is txt file" 
      readMe = open(file_name,'r').read() 
      self.textEdit.setText(readMe)