Skip to main content
 首页 » 编程设计

python之在文件夹层次结构中构建文件菜单

2025年05月04日7yxwkf

我有一个文件夹,该文件夹中有文件和其他文件夹,里面有文件和文件夹等。现在我要做的是制作一个下拉菜单并将每个文件名添加到菜单中,如果它是一个文件夹,它创建一个子菜单并将该文件夹中的文件名添加到该菜单等。我有一些(不完整的)代码:

def TemplatesSetup(self): 
 
  # add templates menu 
  template_menu = self.menubar.addMenu('&Templates') 
 
  #temp = template_menu.addMenu() 
 
  # check if templates folder exists 
  if os.path.exists('templates/') is False: 
    temp = QAction('Can not find templates folder...', self) 
    temp.setDisabled (1) 
    template_menu.addAction(temp) 
    return 
 
  for fulldir, folder, filename in os.walk('templates'): 
 
    for f in filename: 
      template_menu.addAction(QAction(f, self)) 

但我仍然不确定最好的方法是什么。有什么想法吗?

请您参考如下方法:

我为你做了一个完整的例子。

import sys 
import os 
import os.path 
 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
 
class MainWindow(QMainWindow): 
    def __init__(self): 
        QMainWindow.__init__(self) 
 
        template_menu = self.menuBar().addMenu('&Templates') 
        menus = {'templates': template_menu} 
 
        for dirpath, dirnames, filenames in os.walk('templates'): 
            current = menus[dirpath] 
            for dn in dirnames: 
                menus[os.path.join(dirpath, dn)] = current.addMenu(dn) 
            for fn in filenames: 
                current.addAction(fn) 
 
if __name__=='__main__': 
    app = QApplication(sys.argv) 
    window = MainWindow() 
    window.show() 
    sys.exit(app.exec_())