gpt4 book ai didi

python - PyQt QTabBar 不创建新选项卡

转载 作者:行者123 更新时间:2023-12-01 08:31:56 28 4
gpt4 key购买 nike

我正在尝试将新选项卡添加到 QTabBar 中,但没有成功。

我想要实现的是,当您单击“添加”图标时,将会出现 3 个菜单项。根据选择的项目,除了“添加”图标之外,它还会创建一个新选项卡。

例如,如果我选择选项 - food,GUI 将显示如下内容:

| + |食物|

在我的 set_new_tab() 中,虽然它似乎打印出了我选择的选项,但 addTab 似乎没有执行任何操作。

想知道我是否错过了一些东西,或者 QTabBar 是否应该与 QTabWidget 结合使用?

这是我的代码:

class MyWin(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MyWin, self).__init__()

self.tab_bar = QtGui.QTabBar()
self.add_button = QtGui.QToolButton(self)
self.add_button.setIcon(QtGui.QIcon('add.png'))
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
)

def set_menu(self):
menu_options = ['food', 'drinks', 'snacks']
qmenu = QtGui.QMenu(self.add_button)

for opt in menu_options:
qmenu.addAction(opt, partial(self.set_new_tab, opt))
qmenu.addAction
return qmenu

def set_new_tab(self, opt):
print ">>> opt clicked on : ", opt
self.tab_bar.addTab(opt) # This does not seems to creating new tabs..

感谢任何建议。

最佳答案

问题不在于在选项卡中创建,而在于选项卡的尺寸很小并且位于按钮后面,因此解决方案是使用布局正确放置小部件。

from functools import partial
from PyQt4 import QtGui

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.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):
menu_options = ['food', 'drinks', 'snacks']
qmenu = QtGui.QMenu(self.add_button)
for opt in menu_options:
qmenu.addAction(opt, partial(self.set_new_tab, opt))
qmenu.addAction
return qmenu

def set_new_tab(self, opt):
print(">>> opt clicked on : ", opt)
self.tab_bar.addTab(opt)

if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
w = MyWin()
w.show()
sys.exit(app.exec_())

关于python - PyQt QTabBar 不创建新选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53877231/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com