pyqtの記事

1. 最初の pyqt プログラム

ここに画像の説明を挿入
クラスのライティング:
ここに画像の説明を挿入

2. モジュールの紹介

ここに画像の説明を挿入

3. コントロール

3.1 Qプッシュボタン、Qラジオボタン、Qグループボックス

ここに画像の説明を挿入
ここに画像の説明を挿入

3.2 クラベル

ここに画像の説明を挿入

3.3 Qライン編集

ここに画像の説明を挿入

3.4 ウィンドウの調整

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

4. レイアウト

4.1 Qボックスレイアウト

QVボックスレイアウト
ここに画像の説明を挿入
ここに画像の説明を挿入
QHボックスレイアウト
ここに画像の説明を挿入

4.2 QGridLayout

ここに画像の説明を挿入

4.3 Qフォームレイアウト

フォームの送信
ここに画像の説明を挿入

4.4 QStackedLayout

ドロワー レイアウト: 複数ページの切り替え用のレイアウトを提供し、一度に 1 つのインターフェイスのみを表示できます。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

5、窓

5.1 分類

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

6. 信号とスロット

6.1 はじめに

ここに画像の説明を挿入
ここに画像の説明を挿入

6.2 ケース 1: クリック

ここに画像の説明を挿入

6.3 ケース 2: カスタム信号

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

6.4 ケース 3: メッセージ送信をシミュレートする

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

6.5 信号とスロットの考慮事項

シグナル (Signal) とスロット (Slot) は主にウィンドウ間の通信に使用され、非同期操作を実行するにはマルチスレッドが必要です。

信号のオブジェクトは、スロット関数がいくつあるかを知る必要はなく、また、信号を受信したかどうか、または誰が信号を受信し、誰が信号を受信して​​いないかを知る必要もありません。同じスロット関数は、信号の送信者が誰であるかを知る必要はありません。信号は適切なタイミングでのみ送信する必要があるため、オブジェクト間の結合が減少します。

知らせ:

1. 信号は複数のスロットに接続できます。

connect(sender, SIGNAL(mySignal(int)),receiver1, SLOT(mySlot(int)));
connect(sender, SIGNAL(mySignal(int),receiver2, SLOT(mySlot(int)));

シグナルが送信されるとスロット関数が呼び出されますが、呼び出される順序はランダムで不定です。

2. 複数の信号を同じスロットに接続可能

connect(sender1 SIGNAL(mySignal1()), receiver, SLOT(mySlot()));
connect(sender2, SIGNAL(mySignal2()),receiver, SLOT(mySlot()));

何らかの信号が発行されると、スロット機能が実行されます。

3. 1 つの信号を別の信号に接続できる

connect(sender, SIGNAL(mySignal1()),this, SIGNAL(mySignal2()));

最初の信号が送信された後、2 番目の信号も同時に送信されます。それ以外の場合、信号間の接続は信号からスロットへの接続と同じです。

4. 接続を削除できます

disconnect(sender, SIGNAL(mySignal()),receiver, SLOT(mySlot()));

オブジェクトが削除されると、Qt はこのオブジェクトへのすべての接続を自動的に削除するため、この関数はほとんど使用されません。

5.パラメータ設定

信号とスロット関数を正常に接続するには、信号関数とスロット関数のパラメーターのタイプと順序が同じである必要があります。

connect(sender, SIGNAL(mySignal(int, const QString &)),receiver, SLOT(mySlot(int, const QString &)));

信号にスロット関数よりも多くのパラメーターがある場合、追加のパラメーターは無視されます。

connect(sender, SIGNAL(mySignal(int, const QString &)),receiver, SLOT(mySlot(int)));

json を使用できます。信号を定義するときにパラメーターの型を str として定義し、関数を発行するときに json.dumps (辞書) を渡すことで、信号に渡されるパラメーターの数に関係なく、信号がスロットを呼び出すときに関数、json.loads( str) でパラメータを取得します

startsignal = pyqtsignal(str);
self.btn.emit(json.dumps({"user":username,"pwd":password}));
def run(str){
	params = json.loads(str);
	username = params.get("user");
	password = params.get("pwd");
}

6. オブジェクトを取得する

QObject * QObject::sender () const [protected]

sender() 関数は、シグナルの送信者の QObject ポインターを返します。

QObject 型ポインタをキャストして、必要なものを取得します。

信号送信オブジェクトはスロット関数で使用します。

例えば:

mySlot(){

    currentGlWidget = qobject_cast<GLWidget *>(sender());

    QPushButton* btn= dynamic_cast<QPushButton*>(sender())

}

戻り値のあるシグナルスロット。スロット関数には戻り値があります。

アクセス可能な

value = emit mysignal() 

戻り値を取得します。

7. Qtデザイナー

7.1 動的読み込み UI

.ui -》uic.loadUi()
ここに画像の説明を挿入

7.2 コントロールの取得

ここに画像の説明を挿入
ここに画像の説明を挿入
スロット関数をコントロールにバインドすると便利です

8、マルチスレッド化

インターフェイスを備えたプログラムであれば、一般的にプログラム実行後、現在のスレッドを利用してイベントの確認やボタンなどのグラフィカルインターフェイスの更新を行いますが、特定のロジックコードの実行に時間がかかる場合には、 、インターフェイスがフリーズします。
したがって、インターフェースの表示はメインスレッドで行い、ロジック関数コードや時間のかかるオペレーションコードは別スレッドで処理するのが一般的です。

8.1 マルチスレッドの例

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

8.2 複数のスレッド間での信号の受け渡し

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
クラウド関数に接続する
ここに画像の説明を挿入
子スレッドはメインインターフェイススレッドに表示信号を送信します
信号が作成され、接続され、インターフェイスクラスでスロット関数が作成されます
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
子スレッドはどのようにしてインターフェイススレッドの信号を知るのでしょうか?子スレッド オブジェクトを作成するとき、パラメータはスレッド クラスに渡されます。
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43676010/article/details/128186057