PyQt生成了两个菜单,其中一个是所需的

2024-09-26 17:52:04 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是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


Tags: csvself脚本none定义dir菜单row
1条回答
网友
1楼 · 发布于 2024-09-26 17:52:04

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

相关问题 更多 >

    热门问题