Python サーバー プログラミング: PyQt5 を使用したデスクトップ アプリケーションの開発

王林
リリース: 2023-06-18 09:32:17
オリジナル
2971 人が閲覧しました

Python は非常に人気のあるプログラミング言語となっており、サーバーサイド プログラミングで非常に優れたパフォーマンスを発揮します。可読性が高く、構文がシンプルなので、プログラミングに大きな利便性をもたらします。ただし、デスクトップ アプリケーションのプログラミングに関して、Python は GUI インターフェイスの設計でいくつかの困難に直面しました。しかし、PyQt5 の登場により、Python でのデスクトップ アプリケーション開発が容易になりました。

PyQt5 は、デスクトップ アプリケーションの作成に使用できる、広く使用されている Python ライブラリです。 PyQt5 は Qt フレームワークに基づいて開発されており、Qt は複数のプラットフォームでプログラムを実行できるクロスプラットフォーム開発フレームワークです。 PyQt5 はデスクトップ アプリケーションの作成だけでなく、Web アプリケーションやゲームの作成など、他の多くのアプリケーションにも使用できます。

この記事では、PyQt5 を使用してシンプルなデスクトップ アプリケーションを開発し、サーバーとして Python を使用し、PyQt5 を使用して GUI インターフェイスを作成する方法を検討します。ユーザーが数式を入力して結果を計算できる単純な電卓アプリケーションを構築します。はじめましょう!

アプリケーションの作成を開始するには、Python3 と PyQt5 のインストーラーが必要です。 Python3 インストーラーは Python 公式 Web サイトから入手でき、PyQt5 インストーラーは PyQt5 公式 Web サイトからダウンロードできます。

インストールが完了したら、コードの記述を開始できます。まず、PyQt5 モジュールをインポートし、アプリケーション ウィンドウを作成する必要があります。次のコードは空のウィンドウを作成します。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow

app = QApplication(sys.argv)
win = QMainWindow()
win.show()
sys.exit(app.exec_())
ログイン後にコピー

この例では、最初に sys モジュールと QApplication クラスと QMainWindow クラスをインポートしました。次に、アプリケーションのコア オブジェクトである QApplication オブジェクトを作成します。また、QMainWindow オブジェクトを作成し、show() メソッドを使用してアプリケーションのウィンドウを表示しました。最後に、sys.exit() メソッドを使用して、プログラムが安全に終了することを確認します。

これで、ボタンやテキスト ボックスなどのいくつかのウィジェットをウィンドウに追加できます。このアプリケーションには、計算の入力用と結果の表示用の 2 つのテキスト ボックスと、算術演算を実行するためのいくつかのボタンが必要です。

これが私たちのアプリケーションのコードです:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLineEdit, QPushButton, QVBoxLayout


class Calculator(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Calculator')
        
        # 创建两个文本框
        self.input_box = QLineEdit()
        self.result_box = QLineEdit()
        self.result_box.setReadOnly(True)
        
        # 创建按钮
        self.btn_1 = QPushButton('1')
        self.btn_2 = QPushButton('2')
        self.btn_3 = QPushButton('3')
        self.btn_4 = QPushButton('4')
        self.btn_5 = QPushButton('5')
        self.btn_6 = QPushButton('6')
        self.btn_7 = QPushButton('7')
        self.btn_8 = QPushButton('8')
        self.btn_9 = QPushButton('9')
        self.btn_0 = QPushButton('0')
        self.btn_add = QPushButton('+')
        self.btn_sub = QPushButton('-')
        self.btn_mul = QPushButton('*')
        self.btn_div = QPushButton('/')
        self.btn_calculate = QPushButton('=')
        self.btn_clear = QPushButton('Clear')
        
        # 将按钮连接到处理程序
        self.btn_1.clicked.connect(lambda: self.on_click('1'))
        self.btn_2.clicked.connect(lambda: self.on_click('2'))
        self.btn_3.clicked.connect(lambda: self.on_click('3'))
        self.btn_4.clicked.connect(lambda: self.on_click('4'))
        self.btn_5.clicked.connect(lambda: self.on_click('5'))
        self.btn_6.clicked.connect(lambda: self.on_click('6'))
        self.btn_7.clicked.connect(lambda: self.on_click('7'))
        self.btn_8.clicked.connect(lambda: self.on_click('8'))
        self.btn_9.clicked.connect(lambda: self.on_click('9'))
        self.btn_0.clicked.connect(lambda: self.on_click('0'))
        self.btn_add.clicked.connect(lambda: self.on_click('+'))
        self.btn_sub.clicked.connect(lambda: self.on_click('-'))
        self.btn_mul.clicked.connect(lambda: self.on_click('*'))
        self.btn_div.clicked.connect(lambda: self.on_click('/'))
        self.btn_calculate.clicked.connect(self.calculate)
        self.btn_clear.clicked.connect(self.clear)
        
        # 创建垂直布局
        vbox = QVBoxLayout()
        vbox.addWidget(self.input_box)
        vbox.addWidget(self.result_box)
        vbox.addWidget(self.btn_1)
        vbox.addWidget(self.btn_2)
        vbox.addWidget(self.btn_3)
        vbox.addWidget(self.btn_4)
        vbox.addWidget(self.btn_5)
        vbox.addWidget(self.btn_6)
        vbox.addWidget(self.btn_7)
        vbox.addWidget(self.btn_8)
        vbox.addWidget(self.btn_9)
        vbox.addWidget(self.btn_0)
        vbox.addWidget(self.btn_add)
        vbox.addWidget(self.btn_sub)
        vbox.addWidget(self.btn_mul)
        vbox.addWidget(self.btn_div)
        vbox.addWidget(self.btn_calculate)
        vbox.addWidget(self.btn_clear)
        
        # 设置小部件的布局
        self.setLayout(vbox)
        
        self.show()
    
    def on_click(self, key):
        self.input_box.setText(self.input_box.text() + key)
        
    def calculate(self):
        try:
            result = eval(self.input_box.text())
            self.result_box.setText(str(result))
        except:
            self.result_box.setText('Error')
            
    def clear(self):
        self.input_box.setText('')
        self.result_box.setText('')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = QMainWindow()
    
    calc = Calculator()
    win.setCentralWidget(calc)
    
    win.setWindowTitle('Calculator')
    win.show()
    
    sys.exit(app.exec_())
ログイン後にコピー

この例では、QWidget から継承する Calculator というクラスを作成しました。コンストラクターでは、アプリケーション ウィンドウのタイトルを設定し、計算を入力して結果を表示するための 2 つのテキスト ボックスを作成します。さまざまな算術演算を実行するいくつかのボタンも作成しました。

QVBoxLayout を使用して、アプリケーション内のウィジェットの垂直レイアウトを設定します。このレイアウトは、setLayout() メソッドを使用してウィジェットに設定されます。

コード内では他の 3 つのメソッドも定義します。 on_click() メソッドは、ユーザーがボタンをクリックした文字を入力ボックスに追加するボタン イベント ハンドラーです。 Calculate() メソッドは数学的な計算を実行し、結果を結果ボックスに表示します。ユーザー入力が有効な計算ではない場合、結果ボックスにエラー メッセージが表示されます。 clear() メソッドは、入力ボックスと結果ボックス内のすべてをクリアします。

最後に、main 関数で QMainWindow オブジェクトを作成し、Calculator オブジェクトをその中心ウィジェットとして設定します。 setWindowTitle() メソッドを使用してアプリケーションのタイトルを設定し、最後に show() メソッドを使用してウィンドウを表示します。

これでアプリケーションを実行できるようになりました。ターミナルで Python プログラムを実行し、それを .py ファイルとして保存してから実行します。

これは単純な電卓アプリケーションですが、PyQt5 を使用して非常に強力なデスクトップ アプリケーションを開発できることを示しています。 PyQt5 には、豊富な Qt スタイルとテーマのサポート、PyQt5 プラグイン メカニズムによるアプリケーション機能の拡張など、他にも多くの機能があります。

つまり、PyQt5 は、さまざまな種類のデスクトップ アプリケーションの作成に使用できる非常に強力な Python ライブラリです。デスクトップ アプリケーションの開発に興味がある場合、または PyQt5 について詳しく知りたい場合は、PyQt5 の公式ドキュメントとそのサンプル コードを読むことをお勧めします。

以上がPython サーバー プログラミング: PyQt5 を使用したデスクトップ アプリケーションの開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート