PyQt - 两个菜单产生,一个渴望

时间:2017-03-21 16:19:36

标签: python csv user-interface pyqt analytics

下面是PyQT GUI脚本的一部分,我试图在之前定义的国家/地区菜单中创建大陆菜单。但是出于某种原因,这个脚本正在制作两组菜单;一个没有标题的集合,在每个没有标题的部分中,标题为大陆(见下面的截图)。

enter image description here

所需的结果是将空白菜单替换为它们包含的大陆菜单。我是PyQt的新手,所以很可能我在菜单定义中犯了一个简单的错误,但我一直无法找到它。

Continents = {}
    DIR = '/Users/jonathan/Documents/CountryWiseAnalytics/'
    with open(DIR + 'UsersPerCountry.csv', 'r') as UPC:
        UsersCountry = csv.DictReader(UPC, restval=None, restkey=None, dialect='excel')
        for row in UsersCountry:
            Continent = row['Continent:']
            if Continent not in Continents:
                self.menuContinent = QtGui.QMenu(self.menuCountry)
                ContinentMenu = Continents.setdefault(Continent, self.menuContinent.addMenu(Continent))
                self.menuCountry.addAction(self.menuContinent.menuAction())

编辑:

根据您的建议,我得到了这一点,如下面的评论中所述。

enter image description here

1 个答案:

答案 0 :(得分:1)

只有增加大陆是有条件的。国家的添加应该在循环的每次迭代中发生。 我在上一个问题中的答案是通过setdefault来处理该意见; - )

continents = {}
DIR = '/Users/jonathan/Documents/CountryWiseAnalytics/'
with open(DIR + 'UsersPerCountry.csv', 'r') as UPC:
    UsersCountry = csv.DictReader(UPC, restval=None, restkey=None, dialect='excel')
    for row in UsersCountry:
        continent = row['Continent:']
        continentMenu = continents.get(continent, None)
        if continentMenu is None:
            continentMenu = self.menuCountry.addMenu(continent))
            continents[continent] = continentMenu
        useless_action = continentMenu.addAction(row['Country:'])