2012/09/23(日) [n年前の日記]
#1 [python] PyScripter上でPyQt4の補完を有効にする方法
Windows7 x64 + PyScripter 2.5.3.0 上で、PyQt4 の補完が効かないなー、と悩んでたのだけど。配布サイトのFAQに設定方法が書いてあった…。
_FAQ - pyscripter - An open-source Python Integrated Development Environment (IDE) - Google Project Hosting
_FAQ - pyscripter - An open-source Python Integrated Development Environment (IDE) - Google Project Hosting
- ツール → IDEオプション → Special packages の最後に、「PyQt4」を追加する。(自分の環境の場合、該当項目は、「os, wx, scipy, PyQt4」になった。)
- ツール → Edit Startup Scripts を選び、pyscripter_init.py の最後のあたりに、「from PyQt4 import QtCore, QtGui」を追加する。
- PyScripter を再起動。自分の書いたスクリプトの最初のあたりで、「from PyQt4 import QtCore, QtGui」等を書く。
◎ QMainWindowの閉じるボタンを押した時の処理。 :
ウインドウを閉じる前に「ファイルが保存されてないけど終了するのか?」的な問い合わせをしたいなと。QMainWindow のその手のイベント処理を書くにはどうしたら…。
_python - PySide / PyQt detect if user trying to close window - Stack Overflow にやり方が書いてあった。QWidget or QMainWindow と書いてあるので、QMainWindow も closeEvent(self, event): を書けば反応してくれるらしい。
_なんにもない: 閉じるボタンの制御とメッセージボックス も参考になった。
_python - PySide / PyQt detect if user trying to close window - Stack Overflow にやり方が書いてあった。QWidget or QMainWindow と書いてあるので、QMainWindow も closeEvent(self, event): を書けば反応してくれるらしい。
def closeEvent(self, event): """アプリを閉じようとした際の処理""" if self.check_saved(): event.accept() else: event.ignore()self.check_saved() は、自作メソッド(?)で、ファイルが編集されてたら保存するかどうかを尋ねる処理。キャンセルされたら False が返るので、event.ignore() が呼ばれて終了処理がキャンセルされる。
_なんにもない: 閉じるボタンの制御とメッセージボックス も参考になった。
◎ QFontがよく分からない。 :
PyQt には
_QFontComboBox
というフォント名を選択できる ComboBox があって。 QFontComboBox.currentFont (self) で現在選択中のフォント情報を QFont というクラスで取得できるはず、なのだけど。QFont.toString() で文字列(QString)に変換したソレを表示したところ、英数字のフォント名を選んだ際はソレらしい文字列が表示されるものの、日本語のフォント名を表示しようとするとエラーが表示されてしまう。どうも英数字のフォント名しか考慮されてないっぽい?
_QFontDialog の getFont() で取得した QFont を、そのまま QTextEdit.setFont( QFont ) に突っ込んだら反映されたようではあるのだけど。文字列等で、何のフォントを選んだのか取り出せない・取り出そうとするとエラーが出るのでは、設定ファイル等に記録することができない。つまり、毎回フォントを選択し直さないといかんわけで。
PyQt が英語圏のことしか考えてないのか、それとも何か回避策があるのか。よく分からない…。
_QFontDialog の getFont() で取得した QFont を、そのまま QTextEdit.setFont( QFont ) に突っ込んだら反映されたようではあるのだけど。文字列等で、何のフォントを選んだのか取り出せない・取り出そうとするとエラーが出るのでは、設定ファイル等に記録することができない。つまり、毎回フォントを選択し直さないといかんわけで。
PyQt が英語圏のことしか考えてないのか、それとも何か回避策があるのか。よく分からない…。
◎ QCheckBoxに対する処理。 :
何かしらからチェックボックスのON/OFFを切替える際の処理をメモ。これで正しいのか分からんけど。
# チェックボックスに動作を割り当てる self.ui.checkbox_preview.stateChanged.connect(self.chg_cb_value_set)
def chg_auto_reload(self): """HTML自動更新チェックボックスの値を反転させる""" cb = self.ui.checkbox_preview if cb.checkState() == QtCore.Qt.Checked: cb.setCheckState(QtCore.Qt.Unchecked) else: cb.setCheckState(QtCore.Qt.Checked) def chg_cb_value_set(self): """HTML自動更新チェックボックスの値が変わったら呼ばれる処理""" if self.ui.checkbox_preview.checkState() == QtCore.Qt.Checked: self.auto_reload = True ## print "Auto Reload On." else: self.auto_reload = False ## print "Auto Reload Off."別の何かから、チェックボックスのON/OFFを変更したら、チェックボックスの値が変わった時に呼ばれる処理も、その直後にちゃんと呼ばれることに気付かなくて少しハマった。延々と切り替え時の処理が呼ばれてしまう羽目に。
[ ツッコむ ]
以上、1 日分です。