如何解决在PyQt中对单选按钮进行分组
A已QMainWindow
提供布局,您不能简单地用自己的布局替换。从Plain继承QWidget
,或创建一个新的小部件并向其中添加布局和按钮。
您的命名也很混乱,QButtonGroup
不是布局。它实际上没有提供任何可见的UI。如果需要将按钮分组的UI元素,则应查看qgroupbox
。
def func(self):
layout=QtGui.QHBoxLayout() # layout for the central widget
widget=QtGui.QWidget(self) # central widget
widget.setLayout(layout)
number_group=QtGui.QButtonGroup(widget) # Number group
r0=QtGui.qradiobutton("0")
number_group.addButton(r0)
r1=QtGui.qradiobutton("1")
number_group.addButton(r1)
layout.addWidget(r0)
layout.addWidget(r1)
letter_group=QtGui.QButtonGroup(widget) # Letter group
ra=QtGui.qradiobutton("a")
letter_group.addButton(ra)
rb=QtGui.qradiobutton("b")
letter_group.addButton(rb)
layout.addWidget(ra)
layout.addWidget(rb)
# assign the widget to the main window
self.setCentralWidget(widget)
self.show()
解决方法
import sys
from PyQt4 import QtCore,QtGui
class Class1(QtGui.QMainWindow):
def __init__(self):
super(Class1,self).__init__()
self.func()
def func(self):
r0=QtGui.QRadioButton("0",self)
r1=QtGui.QRadioButton("1",self)
ra=QtGui.QRadioButton("a",self)
rb=QtGui.QRadioButton("b",self)
r0.move(100,100)
r1.move(400,100)
ra.move(100,400)
rb.move(400,400)
number_layout=QtGui.QButtonGroup()
letter_layout=QtGui.QButtonGroup()
number_layout.addButton(r0)
number_layout.addButton(r1)
letter_layout.addButton(ra)
letter_layout.addButton(rb)
layout=QtGui.QHBoxLayout(self)
self.show()
def main():
app = QtGui.QApplication(sys.argv)
mw = Class1()
mw.show()
sys.exit(app.exec_())
if __name__=='__main__':
main()
我正在尝试将r0,r1和ra,rb分组,即当r0被选中时,r1应该被取消选中,而对ra或rb的状态没有影响。我该如何实现?该代码表示到目前为止我已经尝试过的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。