gpt4 book ai didi

python - 在许多 QVBoxLayout 中找到选中的 QRadioButton

转载 作者:太空宇宙 更新时间:2023-11-03 23:50:14 26 4
gpt4 key购买 nike

我使用下面的代码动态创建了一组单选按钮:

self.wPaymantType.qgbSomeSelectionGroup = QtGui.QGroupBox()
vbox = QtGui.QVBoxLayout()

for row in listOfChoices:
radio = QtGui.QRadioButton(row)
if bIsFirst:
radio.setChecked(True)
bIsFirst = False
if len(row.name) > nMaxLen:
nMaxLen = len(row.name)

vbox.addWidget(radio)

self.wPaymantType.qgbSomeSelectionGroup.setLayout(vbox)

如何遍历所有单选按钮以找出选中了哪一个?

我试过这样的东西,但我没有从中得到任何好处:

qvbl = self.qgbSomeSelectionGroup.children()[0]

for i in range(0, qvbl.count()):
child = qvbl.itemAt(i)
radio = QtGui.QRadioButton(child.widget())
if radio != None:
if radio.isChecked():
print "radio button num " + str(i) + " is checked"

最佳答案

你的代码不是最小的和独立的,所以真的很难帮助你 - 但无论如何我已经努力构建一个接近最小的独立近似你正在尝试做的事情并且这似乎工作正常——来了……:

from PyQt4 import QtGui

import sys

class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.dowid()
self.setCentralWidget(self.thewid)

def dowid(self):
self.thewid = QtGui.QGroupBox()
vbox = QtGui.QVBoxLayout()
self.radiobuttons = []
listOfChoices = 'one two three'.split()
for i, row in enumerate(listOfChoices):
radio = QtGui.QRadioButton(row)
if i == 0:
radio.setChecked(True)
self.radiobuttons.append(radio)
vbox.addWidget(radio)
self.thewid.setLayout(vbox)

def examine(self):
for i, radio in enumerate(self.radiobuttons):
if radio.isChecked():
print "radio button num " + str(i) + " is checked"
else:
print "radio button num " + str(i) + " is NOT checked"

if __name__ == '__main__':
app = QtGui.QApplication([])
mainWin = MainWindow()
mainWin.show()
rc = app.exec_()
mainWin.examine()

这似乎可以满足您的要求。关键的变化是保留实际的 Python 小部件对象,而不是试图从布局 vbox 中恢复它们——这种尝试似乎没有按预期工作,至少在正确访问关于给定单选按钮是否可用的关键细节方面是这样。检查与否,这当然是你问的核心。

关于python - 在许多 QVBoxLayout 中找到选中的 QRadioButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2089897/

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