Могу ли я сделать групповую радиокнопку как группу нажатых кнопок, а не как группу кругов с одной точкой? (PyQt4)

Если я использую tkinterЯ могу установить опцию indicatoron = 0и получить ожидаемый эффект.

Этот эффект может быть достигнут с группой QPushButtonи некоторый дополнительный код, я полагаю.

Но так ли это? Может быть, PyQt имеет опцию, как tkinter?

Этот код дал мне ожидаемый эффект от tkinter.

from tkinter import *
root = Tk()
var = IntVar()
button1 = Radiobutton(root,indicatoron=0,text=' One Button ',variable=var,value=1)
button2 = Radiobutton(root,indicatoron=0,text=' Two Button ',variable=var,value=2)
button3 = Radiobutton(root,indicatoron=0,text='Three Button',variable=var,value=3)
button1.place(x=4, y=4)
button2.place(x=4, y=30)
button3.place(x=4, y=56)
mainloop()

1 ответ

Решение

В PyQt вы можете использовать QPushButton и QButtonGroup:

from PyQt4 import QtCore, QtGui

class Window(QtGui.QWidget):
    def __init__(self):
        super(Window, self).__init__()
        layout = QtGui.QVBoxLayout(self)
        self.buttonGroup = QtGui.QButtonGroup(self)
        for text in 'One Two Three'.split():
            button = QtGui.QPushButton(text)
            button.setCheckable(True)
            layout.addWidget(button)
            self.buttonGroup.addButton(button)
        self.buttonGroup.buttonClicked.connect(self.handleButtons)

    def handleButtons(self, button):
        print('Button %s Clicked' % button.text())

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
Другие вопросы по тегам