2016-06-22 58 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和向下滾動,尋找具有特定文本的,然後檢查/取消選中它需要一些時間。所以我想插入一些文本,並能夠看到沒有向下滾動的文本複選框。您的建議ensureWidgetVisible()將做到這一點。謝謝。 –

回答

相關問題