PyQt - 生成了两个菜单,一个需要

PyQt - Two Menus Produced, One Desired

下面是 PyQT GUI 脚本的一部分,我在其中尝试在先前定义的国家/地区菜单中创建大洲菜单。但是,出于某种原因,该脚本制作了两组菜单;一个无标题集,每个无标题部分内有一个有标题的大陆(见下面的截图)。

期望的结果是用它们包含的大陆菜单替换空白菜单。我是 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())

编辑:

根据您的建议,我明白了,如下面的评论所述。

只有大陆的加入是有条件的。添加国家应该发生在循环的每次迭代中。 我在上一个问题中的回答是通过 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:'])