我已将 QMenu 附加到菜单未正确反映的 QToolButton。
我正在通过读取.txt
文件填充我的 QMenu。菜单在第一次运行时显示正确的项目,但如果我在 .txt 文件中进行了更改并重新单击按钮,QMenu 仍然在第一次运行时显示该项目。
再加上,似乎clicked
信号只被调用一次?
class MyWin(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MyWin, self).__init__()
central_widget = QtGui.QWidget()
self.setCentralWidget(central_widget)
vlay = QtGui.QVBoxLayout(central_widget)
hlay = QtGui.QHBoxLayout()
vlay.addLayout(hlay)
vlay.addStretch()
self.add_button = QtGui.QToolButton()
self.tab_bar = QtGui.QTabBar(self)
self.add_button.setIcon(QtGui.QIcon('add.png'))
self.add_button.clicked.connect(self.set_menu)
#self.add_button.setMenu(self.set_menu())
#self.add_button.setPopupMode(QtGui.QToolButton.InstantPopup)
self.tab_bar.setTabButton(
0,
QtGui.QTabBar.ButtonPosition.RightSide,
self.add_button
)
hlay.addWidget(self.add_button)
hlay.addWidget(self.tab_bar)
def set_menu(self):
with open('/Desktop/item_file.txt') as f:
menu_options = f.read().splitlines()
print menu_options
qmenu = QtGui.QMenu(self.add_button)
for opt in menu_options:
qmenu.addAction(opt, partial(self.set_new_tab, opt))
self.add_button.setMenu(qmenu)
self.add_button.setPopupMode(QtGui.QToolButton.InstantPopup)
def set_new_tab(self, opt):
self.tab_bar.addTab(opt)