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:'])
下面是 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:'])