📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == Qt5でPythonの開発環境を構築する時、PyQt5とPySide2の2種類が存在する。<br> <br> ここでは、2種類のいくつかの差異を確認…」 |
細 文字列「__FORCETOC__」を「{{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This pag… |
||
| (同じ利用者による、間の7版が非表示) | |||
| 263行目: | 263行目: | ||
注意点は、sys.modulesにあることを確認するために、sysモジュールをインポートする必要がある。<br> | 注意点は、sys.modulesにあることを確認するために、sysモジュールをインポートする必要がある。<br> | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
# xxx.pyファイル | |||
import sys | import sys | ||
| 280行目: | 282行目: | ||
<br> | <br> | ||
例えば、プロジェクトのルートにqt.pyファイルを作成して、<br> | 例えば、プロジェクトのルートにqt.pyファイルを作成して、<br> | ||
PyQt5とPySide2のいずれかからQtモジュール(QtCore、QtGui、QtWidgets等) | PyQt5とPySide2のいずれかからQtモジュール(QtCore、QtGui、QtWidgets等)をインポートした後、他のPythonファイルからインポートする。<br> | ||
<br> | <br> | ||
以下に、qt.pyファイルのソースコードを記述する。<br> | 以下に、qt.pyファイルのソースコードを記述する。<br> | ||
<u> | <u>他のPyQt5モジュールおよびPySide2モジュール(ブラウザ、マルチメディア等)を使用する場合、<code>if-else</code>ブロックの両方に追加することを忘れないこと。</u><br> | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
# qt.pyファイル(プロジェクトのルート) | |||
import sys | import sys | ||
| 300行目: | 304行目: | ||
次に、他のPythonファイルからQt5(qt.pyファイル)をインポートする。<br> | 次に、他のPythonファイルからQt5(qt.pyファイル)をインポートする。<br> | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
# xxx.pyファイル | |||
from .qt import QtGui, QtWidgets, QtCore | from .qt import QtGui, QtWidgets, QtCore | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
その他の方法として、環境変数<code>QT_API</code>を使用して、それらを切り替える方法がある。<br> | |||
詳細は、次のQtPyセクションを参照すること。<br> | 詳細は、次のQtPyセクションを参照すること。<br> | ||
<br><br> | <br><br> | ||
== QtPy == | == QtPy == | ||
Qt5以外のもの(PyQt 4やPySide 1等) | QtPyは、PyQtやPySideへの単一のAPIを使用して、ソフトウェアが開発できる抽象化レイヤである。<br> | ||
Qt5(QtGuiモジュールがQtGuiとQtWidgetsに分割されている)を使用して、PyQt5、PyQt4、PySide2、PySideをサポートしている。<br> | |||
<br> | |||
PyQt5、PyQt4、PySide2、PySide向けの標準化されたPySide2のようなAPIが提供されている。<br> | |||
PySide2モジュールやPyQt5モジュールの代わりに、qtpyモジュールからQtモジュールをインポートする。<br> | |||
<br> | |||
QtPyを使用するには、PyQt5、PyQt4、PySide2、PySideをインストールしている必要がある。<br> | |||
これらのライブラリのいずれかが存在する場合、環境変数QT_APIを設定しない時は、標準でPyQt5が使用される。<br> | |||
<br> | |||
環境変数<code>QT_API</code>は、以下の値を取ることができる。<br> | |||
* pyqt5 | |||
*: PyQt5を使用する。 | |||
* pyqtまたはpyqt4 | |||
*: PyQt4を使用する。 | |||
* pyside2 | |||
*: PySide2を使用する。 | |||
* pyside | |||
*: PySideを使用する。 | |||
<br> | |||
QtPyをインストールするには、以下のコマンドを実行する。<br> | |||
pip3 install qtpy | |||
<br> | |||
Qt5以外のもの(PyQt 4やPySide 1等)をターゲットにする場合、[https://github.com/spyder-ide/qtpy QtPyのGitHub]を参照すること。<br> | |||
<br> | <br> | ||
QtPyを使用すると、環境変数<code>QT_API</code>を使用して、ソフトウェアから読み込むAPIを制御できる。<br> | QtPyを使用すると、環境変数<code>QT_API</code>を使用して、ソフトウェアから読み込むAPIを制御できる。<br> | ||
| 319行目: | 346行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
== エラー関連 == | |||
PySide2プロジェクトを実行する時、以下のような警告が出力される場合がある。<br> | |||
Qt WebEngine seems to be initialized from a plugin. | |||
Please set Qt::AA_ShareOpenGLContexts using QCoreApplication::setAttribute before constructing QGuiApplication. | |||
<br> | |||
これは、<code>QApplication</code>クラスのインスタンスを生成する前に、<code>AA_ShareOpenGLContexts</code>を設定することで修正できる。<br> | |||
以下の例は、PySide2を使用している場合である。<br> | |||
<syntaxhighlight lang="python"> | |||
from PySide2 import QtCore, QtWidgets | |||
# ...略 | |||
if __name__ == '__main__': | |||
QCoreApplication.setAttribute(Qt.AA_ShareOpenGLContexts) | |||
app = QApplication(sys.argv) | |||
# ...略 | |||
</syntaxhighlight> | |||
<br> | |||
また、PySide6を使用することで警告を回避することもできる。<br> | |||
<br><br> | |||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | |||
[[カテゴリ:Qt]][[カテゴリ:Python]] | |||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Qt]] | [[カテゴリ:Qt]][[カテゴリ:Python]] | ||