2016-06-22 27 views
1

Ich möchte QLabel mit bestimmten Text und Fokus-Ansicht darauf finden. Das Finden des Widgets mit dem gewünschten Text ist einfach, aber ich konnte nicht herausfinden, wie ich darauf fokussieren kann. Der Code so sieht weit wie folgt aus:Wie fokussiere ich auf 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() 

Irgendwelche Ideen, wie zum Laufen zu bringen konzentrieren?

+1

Was meinst du mit "focus view"? 'QLabels' sind nicht editierbar. Im Allgemeinen legen Sie den Fokus auf ein Widget fest, so dass es Tastatureingaben erhält und der Benutzer das Steuerelement bearbeiten oder auslösen kann (z. B. "QLIneEdit", "QPushButton"). Warum möchten Sie sich auf ein 'QLabel' konzentrieren? –

+0

QLabel ist nur ein Beispiel. Eigentlich habe ich ~ 1000 QCheckBoxen und scrolle nach unten und suche nach demjenigen mit spezifischem Text und dann check/uncheck es dauert einige Zeit. Also ich möchte etwas Text einfügen und in der Lage sein, Kontrollkästchen mit diesem Text zu sehen, ohne nach unten zu scrollen. Ihr Vorschlag ensureWidgetVisible() wird es tun. Vielen Dank. –

Antwort