Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 3, 2010 08:09:57

Jacpot
От:
Зарегистрирован: 2010-06-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Radiobutton, PyQt4

Как “отжать”, “обнулить” радиобаттон?



Офлайн

#2 Июнь 3, 2010 11:25:26

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Radiobutton, PyQt4

setChecked(False), кажется.



Офлайн

#3 Июнь 3, 2010 12:38:44

Jacpot
От:
Зарегистрирован: 2010-06-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Radiobutton, PyQt4

странно эта функция с True устанавливает в радиобаттоне точку, а False не убирает…



Офлайн

#4 Июнь 3, 2010 15:53:32

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

Radiobutton, PyQt4

Сначала ставится точка:

rb.setChecked(True)
теперь точка убирается:
rb.setCheckable(False)
P.S. В таких случаях юзай дезайнер, там много полезного можно найти и узнать, в том числе и это))



Отредактировано (Июнь 3, 2010 16:56:20)

Офлайн

#5 Июнь 3, 2010 18:56:08

Jacpot
От:
Зарегистрирован: 2010-06-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Radiobutton, PyQt4

apologize828
Да, setCheckable(False) убирает точку, но в группе кнопок создается вот такой эффект: после присвоения этому свойству сначала False, а потом True позволяет обнулить кнопки, но затем при нажатии мышкой по любой из кнопок становится активной та кнопка, которая была нажата ранее. Что-то ничего не придумывается по решению этой проблемы :)
ЗЫ посмотрел дизигнер внимательней - дизигнер рулез, много свойств видно наглядно как работают )))



Офлайн

#6 Июнь 3, 2010 19:48:46

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

Radiobutton, PyQt4

Ну я понял так есть 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_()
Может я неправильно понял задачу, но тогда по подробнее пожалуйста!



Офлайн

#7 Июнь 4, 2010 05:41:32

Jacpot
От:
Зарегистрирован: 2010-06-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Radiobutton, PyQt4

apologize828
Может я неправильно понял задачу, но тогда по подробнее пожалуйста!
Хм… да все правильно поняли, но у меня ваш код вообще странно себя ведет :) во-первых, можно нажать две или три радиокнопки одновременно, а, во-вторых, сброс не работает. А у вас я так понимаю все нормально работало?



Отредактировано (Июнь 4, 2010 05:41:55)

Офлайн

#8 Июнь 4, 2010 09:47:03

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

Radiobutton, PyQt4

Ммм.. действительно ведет себя странно: когда нажимаем кнопку “Сброс” сброс происходит, Но чтобы мы увидели это, после нажатия кнопки, необходимо перевести курсор туда где стояла точка и тогда она убирается.
Да это действительно странно и не есть гуд)) ладно попробую поколдовать еще, чтобы добиться нужного результата.



Офлайн

#9 Июнь 4, 2010 10:53:04

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

Radiobutton, PyQt4

Так ладно придумал пока вот такую вещь:

#!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)

Офлайн

#10 Июнь 5, 2010 06:20:50

Jacpot
От:
Зарегистрирован: 2010-06-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Radiobutton, PyQt4

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_()



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version