QLineEditが表示されるとすぐにFocusを出したいと思っています。他の場合(同じクラス内のすべてのウィジェット)、.setFocus()
で可能でしたが、ここでは動作しません。 私の受験者は.activateWindow()
と.raise_()
ですが、どのように使用するのか分かりませんでした。PyQt4 MainWindowから呼び出され、CentralWidgetとして設定されているので、ウィジェットにフォーカスを当てるか?
編集:私の目標は、tab
キーを押すか、あらかじめマウスでクリックすることなくキーボードから直接QLineEditを入力することです。ここで
質問(機能)の要部例:あなたはひどくPythonやPyQt4を悪用私を見ている場合は
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Quiz(QWidget):
def __init__(self):
QWidget.__init__(self)
edit = QLineEdit("Select & Focus")
edit.selectAll()
edit.setFocus() # doesn't work - no effect at all
vbox = QVBoxLayout()
vbox.addWidget(edit)
self.setLayout(vbox)
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
startQuiz = QAction("Start Quiz", self)
startQuiz.triggered.connect(self.startQuizQuestions)
menubar = self.menuBar()
quizMenu = menubar.addMenu("&Quiz")
quizMenu.addAction(startQuiz)
self.setGeometry(300, 300, 500, 400)
self.setWindowTitle("xyz")
self.show()
def startQuizQuestions(self):
newQuiz = Quiz()
self.setCentralWidget(newQuiz)
def main():
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
...批判すること自由に感じ、私は知りたいです。
編集:の.activateWindow
にあります。このコメントは "コメント"です: "Windowsでは、アプリケーションが現在アクティブなアプリケーションではないときに呼び出すと、アクティブなウィンドウになりません。 - しかし、私はそれがアクティブなウィンドウ(= MainWindow)であることを意味します。これは、アクティブなウィンドウのCentralWidget内の他のウィジェットです。 (?)