2015-05-26 6 views
1

1) У меня есть флажок под названием «ch_check» в моем UI, созданный с помощью Qt Designer, который должен быть протестированИспользование флажок в PyQt

2) Существует также кнопка «bt_button», которая вызывает простой функция:

self.dlg.bt_button.clicked.connect(self.doCheck) 

3) функция:

def doCheck(self): 
    if ch_check.isChecked(): 
     self.dlg.le_text.setText("Hello") 
    else: 
     self.dlg.le_text.setText("Nope") 

Однако я не могу понять, как ссылаться на ящик правильно. Как мне это сделать? Нужно ли мне сначала связать флажок? Все примеры, которые я нашел до сих пор, используют флажки для запуска функций и еще не полностью игнорируя это основное использование. Я нашел этот вопрос, но он не отвечает, как обращаться с существующим флажком: How to check if a checkbox is checked in pyqt

ответ

0

Как уже отмечался в комментариях выше, я только что сделал небольшую ошибку. Правильный код:

def doCheck(self): 
    checker = self.dlg.ch_check 
    if self.dlg.ch_check.isChecked(): 
     self.dlg.le_text.setText("Hello") 
    else: 
     self.dlg.le_text.setText("Nope") 
7

Вы можете сделать это, используя сигнал StateChanged. В этом примере мы имеем простой .ui и простой файл .py:

Файл .ui определяет два виджета. Флажок (ch_check) и один QLabel (my_label)

Файл питон:

from PyQt4 import QtCore 
from PyQt4 import QtGui 
import sys 
from test_ui import Ui_MainWindow 

class CheckDialog(QtGui.QMainWindow): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 

     # Set up the user interface from Designer. 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 
     self.ui.ch_check.stateChanged.connect(self.state_changed) 

    def state_changed(self, int): 
     if self.ui.ch_check.isChecked(): 
      self.ui.my_label.setText("CHECKED!") 
     else: 
      self.ui.my_label.setText("UNCHECKED!") 


if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    window = CheckDialog() 
    window.show() 
    sys.exit(app.exec_()) 

Объяснение:

Мы создали наш сигнал с этой линии:

self.ui.ch_check.stateChanged.connect(self.state_changed) 

Когда состояние флажка изменяется, оно вызовет state_changed функция. Вот где ваша логика, чтобы проверить, отмечен ли флажок или не отмечен флажок.

def state_changed(self, int): 
    if self.ui.ch_check.isChecked(): 
     self.ui.my_label.setText("CHECKED!") 
    else: 
     self.ui.my_label.setText("UNCHECKED!") 

В этой функции мы определяем, был ли установлен флажок. Если это так, мы меняем наш ярлык, чтобы сказать «CHECKED», если он не установлен, ярлык меняется на «UNCHECKED».


Пример:

Когда приложение запускается пользовательский интерфейс выглядит следующим образом:

Newly opened app

Проверка окна, изменяет метку:

Checked checkbox

Uncheckin г коробка, также изменяет метку:

Unchecked checkbox

+0

Это именно то, чего я не пытаюсь сделать. Я просто хочу проверить статус флажка. Ничего больше. Надеюсь, обновился вопрос для большей ясности. – MapEngine

+0

Что не так с использованием оператора if в функции?Я не понимаю ваш измененный вопрос. – Andy

+0

Ваш ответ прекрасен, но не то, что я искал. Моя проблема была намного проще. Наверное, я сделал это слишком сложным, мне нужно было добавить ** self.dlg. ** к моему, если .. d'oh! – MapEngine

Смежные вопросы