Найти - Пользователи
Полная версия: Radiobutton, PyQt4
Начало » GUI » Radiobutton, PyQt4
1 2
Jacpot
Как “отжать”, “обнулить” радиобаттон?
ZZZ
setChecked(False), кажется.
Jacpot
странно эта функция с True устанавливает в радиобаттоне точку, а False не убирает…
apologize828
Сначала ставится точка:
rb.setChecked(True)
теперь точка убирается:
rb.setCheckable(False)
P.S. В таких случаях юзай дезайнер, там много полезного можно найти и узнать, в том числе и это))
Jacpot
apologize828
Да, setCheckable(False) убирает точку, но в группе кнопок создается вот такой эффект: после присвоения этому свойству сначала False, а потом True позволяет обнулить кнопки, но затем при нажатии мышкой по любой из кнопок становится активной та кнопка, которая была нажата ранее. Что-то ничего не придумывается по решению этой проблемы :)
ЗЫ посмотрел дизигнер внимательней - дизигнер рулез, много свойств видно наглядно как работают )))
apologize828
Ну я понял так есть 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_()
Может я неправильно понял задачу, но тогда по подробнее пожалуйста!
Jacpot
apologize828
Может я неправильно понял задачу, но тогда по подробнее пожалуйста!
Хм… да все правильно поняли, но у меня ваш код вообще странно себя ведет :) во-первых, можно нажать две или три радиокнопки одновременно, а, во-вторых, сброс не работает. А у вас я так понимаю все нормально работало?
apologize828
Ммм.. действительно ведет себя странно: когда нажимаем кнопку “Сброс” сброс происходит, Но чтобы мы увидели это, после нажатия кнопки, необходимо перевести курсор туда где стояла точка и тогда она убирается.
Да это действительно странно и не есть гуд)) ладно попробую поколдовать еще, чтобы добиться нужного результата.
apologize828
Так ладно придумал пока вот такую вещь:
#!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_()
Так сойдет? или надо что-нибудь по-красивее?)
Jacpot
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_()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB