gpt4 book ai didi

python - 从可检查的组合框中捕获操作

转载 作者:太空宇宙 更新时间:2023-11-03 17:10:08 25 4
gpt4 key购买 nike

受到以下主题的启发:PyQt: How to set Combobox Items be Checkable?
我能够通过使用 QToolButton 并使用 addAction 添加可检查项目来创建一个简单的可检查“组合框”。请参阅简单的代码示例:

from PyQt4 import QtCore, QtGui
import sys
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(198, 157)
self.toolButton = QtGui.QToolButton(Dialog)
self.toolButton.setGeometry(QtCore.QRect(60, 50, 71, 19))
self.toolButton.setObjectName("toolButton")
self.toolButton.setText("MyButton")
QtCore.QMetaObject.connectSlotsByName(Dialog)

class MyDialog(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.toolMenu = QtGui.QMenu(self.ui.toolButton)
for i in range(3):
action = self.toolMenu.addAction("Category " + str(i))
action.setCheckable(True)
self.ui.toolButton.setMenu(self.toolMenu)
self.ui.toolButton.setPopupMode(QtGui.QToolButton.InstantPopup)

if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = MyDialog()
myapp.show()
sys.exit(app.exec_())

但是我如何捕获对话框中已选中的 QToolButton 操作(即类别 1 和/或类别 2/3)?

最佳答案

或者,您可以定义您的 QActionGroup收集所有操作,然后将触发信号连接到回调方法,如下所示:

class MyDialog(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.toolMenu = QtGui.QMenu(self.ui.toolButton)
group = QtGui.QActionGroup(self.toolMenu)
for i in range(3):
action = self.toolMenu.addAction("Category %d" % i)
action.setCheckable(True)
action.setActionGroup(group)
action.setData(i)
self.ui.toolButton.setMenu(self.toolMenu)
self.ui.toolButton.setPopupMode(QtGui.QToolButton.InstantPopup)
group.triggered.connect(self.test)

def test(self, act):
print 'Action' , act.data().toInt()[0]

test() 方法中,读取每个 actiondata 返回 QVariant您需要使用返回 (int, bool) 元组的 toInt 方法将其转换回 int,因此 [0]

关于python - 从可检查的组合框中捕获操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34176782/

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