Форум сайта python.su
Как “отжать”, “обнулить” радиобаттон?
Офлайн
setChecked(False), кажется.
Офлайн
странно эта функция с True устанавливает в радиобаттоне точку, а False не убирает…
Офлайн
Сначала ставится точка:
rb.setChecked(True)
rb.setCheckable(False)
P.S. В таких случаях юзай дезайнер, там много полезного можно найти и узнать, в том числе и это))
Отредактировано (Июнь 3, 2010 16:56:20)
Офлайн
apologize828Да, setCheckable(False) убирает точку, но в группе кнопок создается вот такой эффект: после присвоения этому свойству сначала False, а потом True позволяет обнулить кнопки, но затем при нажатии мышкой по любой из кнопок становится активной та кнопка, которая была нажата ранее. Что-то ничего не придумывается по решению этой проблемы :)
Офлайн
Ну я понял так есть QGroupBox и в нем QRadioButton нужно иметь возможность обнулить QRadioButton?
Ну тогда типа такого:
И при обнулении можно заново выбрать то, что нужно!
#!usr/bin/python
#-*- coding: utf-8 -*-
from PyQt4 import QtGui
import sys
app=QtGui.QApplication(sys.argv)
gb=QtGui.QGroupBox('РадиоКнопки')
rb1=QtGui.QRadioButton('1')
rb2=QtGui.QRadioButton('2')
rb3=QtGui.QRadioButton('3')
bt=QtGui.QPushButton('Сброс')
vb=QtGui.QVBoxLayout()
vb.addWidget(rb1)
vb.addWidget(rb2)
vb.addWidget(rb3)
vb.addWidget(bt)
gb.setLayout(vb)
a=[rb1,rb2,rb3]
def sbros():
for i in a:
i.setCheckable(False)
i.setCheckable(True)
bt.clicked.connect(sbros)
gb.show()
app.exec_()
Может я неправильно понял задачу, но тогда по подробнее пожалуйста!
Офлайн
apologize828Хм… да все правильно поняли, но у меня ваш код вообще странно себя ведет :) во-первых, можно нажать две или три радиокнопки одновременно, а, во-вторых, сброс не работает. А у вас я так понимаю все нормально работало?
Может я неправильно понял задачу, но тогда по подробнее пожалуйста!
Отредактировано (Июнь 4, 2010 05:41:55)
Офлайн
Ммм.. действительно ведет себя странно: когда нажимаем кнопку “Сброс” сброс происходит, Но чтобы мы увидели это, после нажатия кнопки, необходимо перевести курсор туда где стояла точка и тогда она убирается.
Да это действительно странно и не есть гуд)) ладно попробую поколдовать еще, чтобы добиться нужного результата.
Офлайн
Так ладно придумал пока вот такую вещь:
#!usr/bin/python
#-*- coding: utf-8 -*-
from PyQt4 import QtGui
import sys
app=QtGui.QApplication(sys.argv)
gb=QtGui.QGroupBox('Включить/Сброс')
rb1=QtGui.QRadioButton('1')
rb2=QtGui.QRadioButton('2')
rb3=QtGui.QRadioButton('3')
vb=QtGui.QVBoxLayout()
vb.addWidget(rb1)
vb.addWidget(rb2)
vb.addWidget(rb3)
gb.setLayout(vb)
gb.setCheckable(True)
gb.setChecked(False)
a=[rb1,rb2,rb3]
def sbros():
for i in a:
i.setCheckable(False)
i.setCheckable(True)
gb.clicked.connect(sbros)
gb.show()
app.exec_()
#!usr/bin/python
#-*- coding: utf-8 -*-
from PyQt4 import QtGui
import sys
app=QtGui.QApplication(sys.argv)
gb=QtGui.QGroupBox('Включить')
rb1=QtGui.QRadioButton('1')
rb2=QtGui.QRadioButton('2')
rb3=QtGui.QRadioButton('3')
vb=QtGui.QVBoxLayout()
vb.addWidget(rb1)
vb.addWidget(rb2)
vb.addWidget(rb3)
gb.setLayout(vb)
gb.setCheckable(True)
gb.setChecked(False)
a=[rb1,rb2,rb3]
def sbros():
if gb.isChecked()==False:
for i in a:
i.setCheckable(False)
i.setCheckable(True)
gb.setTitle('Включить')
elif gb.isChecked()==True:
gb.setTitle('Обнулить Кнопки')
gb.clicked.connect(sbros)
gb.show()
app.exec_()
Отредактировано (Июнь 4, 2010 11:51:04)
Офлайн
apologize828сойдет, благодарю очень :)
Так сойдет? или надо что-нибудь по-красивее?)
from PyQt4 import QtGui
import sys
app=QtGui.QApplication(sys.argv)
gb=QtGui.QGroupBox('РадиоКнопки')
rb1=QtGui.QRadioButton('1')
rb2=QtGui.QRadioButton('2')
rb3=QtGui.QRadioButton('3')
bt=QtGui.QPushButton('Сброс')
vb=QtGui.QVBoxLayout()
vb.addWidget(rb1)
vb.addWidget(rb2)
vb.addWidget(rb3)
vb.addWidget(bt)
gb.setLayout(vb)
a=[rb1,rb2,rb3]
def sbros():
gb.setCheckable(True)
for i in a:
i.setCheckable(False)
i.setCheckable(True)
gb.setCheckable(False)
bt.clicked.connect(sbros)
gb.show()
app.exec_()
Офлайн