2016-06-22 2 views
1

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

import sys 
from PySide import QtCore, QtGui 

class MainWindow(QtGui.QMainWindow): 
    def __init__(self): 
     super().__init__() 

     widget = QtGui.QWidget() 
     self.layout = QtGui.QGridLayout() 

     for i in range(10): 
      label = QtGui.QLabel("aaaa" + str(i)) 
      self.layout.addWidget(label, i, 0) 

     widget.setLayout(self.layout) 
     self.toolbar = self.addToolBar("aa") 
     findAction = QtGui.QAction('Find', self) 
     findAction.triggered.connect(self.find) 
     self.toolbar.addAction(findAction) 
     self.scroll = QtGui.QScrollArea() 
     self.scroll.setWidget(widget) 
     self.scroll.setWidgetResizable(True) 
     self.setMaximumSize(200, 200) 
     self.setCentralWidget(self.scroll) 

    def find(self): 
     widgets = (self.layout.itemAt(i).widget() for i in range(self.layout.count())) 
     for w in widgets: 
      if isinstance(w, QtGui.QLabel): 
       if w.text() == "aaaa9": 
        w.setFocus() 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    mainWindow = MainWindow() 
    mainWindow.show() 
    app.exec_() 

if __name__ == "__main__": 
    main() 

Любые идеи, как получить фокус работает?

+1

Что вы имеете в виду под "фокус зрения"? 'QLabels' не редактируются. Вы обычно фокусируетесь на виджетах, чтобы получать ввод с клавиатуры, и пользователь может редактировать или запускать элемент управления (например, 'QLIneEdit',' QPushButton'). Почему вы хотите сосредоточиться на «QLabel»? –

+0

QLabel - пример. На самом деле у меня есть ~ 1000 QCheckBox'es и прокрутка вниз и поиск одного с определенным текстом, а затем проверка/снятие отметки занимает некоторое время. Поэтому я хочу вставить некоторый текст и уметь видеть флажок с этим текстом без прокрутки вниз. Ваше предложение гарантирует, чтоWidgetVisible() сделает это. Благодарю. –

ответ