2016-06-22 5 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を持ってスクロールダウンし、特定のテキストを持つものを探して、チェック/チェックを外すには時間がかかる。だから私はいくつかのテキストを挿入し、スクロールせずにそのテキストでチェックボックスを見ることができるようにしたい。あなたの提案であるsureWidgetVisible()がそれを行います。ありがとう。 –

答えて

0

あなたは "フォーカスビュー" とはどういう意味ですかensureWidgetVisible()

self.scroll.ensureWidgetVisible(w) 
関連する問題