2023-04-13

ChatGPT にコーディングを頼んでみました

ChatGPT [1] は、OpenAI が 2022 年 11 月に公開した人工知能チャットボットです。原語の Generative Pre-trained Transformer とは、「生成可能な事前学習済み変換器」という意味になります。OpenAI の GPT-3 ファミリーの言語モデルを基に構築されており、教師あり学習強化学習の両方の手法で転移学習されています。

Wikipedia より引用

Qiita で ChatGPT に Tkinter で GUI プログラミングをしてもらっている記事 [2] を読んで、いやいや、これは凄い!と感動したので、PySide6 ではどうだろうと思って、簡単な GUI プログラムのコーディングを頼んでみました。

ChatGPT とのやりとり


PySide6 で Hello World! のGUIプログラムを記述してください。ただし、Hello World!はボタンに表示して、そのボタンをクリックすると Hello World! の文字列を標準出力するようにして下さい。また、GUI 部分は Hello クラスにして再利用できるようにして下さい。


以下は、PySide6を使ったHello World!のGUIプログラムです。ボタンをクリックすると、"Hello World!"という文字列が標準出力に出力されます。また、GUI部分は再利用可能なHelloクラスにカプセル化されています。

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton


class Hello(QMainWindow):
    def __init__(self):
        super().__init__()

        button = QPushButton("Hello World!", self)
        button.clicked.connect(self.print_hello)
        self.setCentralWidget(button)

    def print_hello(self):
        print("Hello World!")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    hello = Hello()
    hello.show()
    sys.exit(app.exec())

まず、PySide6から必要なクラスをインポートしています。Helloクラスは、QMainWindowを継承しています。init()メソッドでは、QPushButtonを作成し、ウィンドウの中央に配置します。また、clickedシグナルをprint_hello()メソッドに接続します。print_hello()メソッドでは、"Hello World!"という文字列を標準出力に出力します。

最後に、メインウィンドウを作成し、表示するために、QApplicationを作成して、Helloクラスのインスタンスを作成して、show()メソッドを呼び出し、アプリケーションを実行します。


イベントループをmain関数にしてもらえますか?


はい、イベントループをmain関数に移動して、以下のように書き換えることができます。

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton


class Hello(QMainWindow):
    def __init__(self):
        super().__init__()

        button = QPushButton("Hello World!", self)
        button.clicked.connect(self.print_hello)
        self.setCentralWidget(button)

    def print_hello(self):
        print("Hello World!")


def main():
    app = QApplication(sys.argv)
    hello = Hello()
    hello.show()
    sys.exit(app.exec())


if __name__ == '__main__':
    main()

ここでは、main()関数が新しく追加され、QApplicationHelloクラスのインスタンスを作成して、show()メソッドを呼び出します。そして、sys.exit()メソッドを呼び出して、アプリケーションが終了するようにします。最後に、if name == 'main':のブロック内で、main()関数を呼び出します。これにより、イベントループがメインスレッドで実行され、アプリケーションが正しく終了されるようになります。


流石だね、ありがとう。


どういたしまして!何か他に質問があれば、遠慮なく聞いてください。お手伝いできることがあれば、喜んでお手伝いします。


実行例

見た目、ちゃんと動きそうなコーディングですが、念の為、実行してみました。

ChatGPT がコーディングした Hello World! の GUI プログラムの実行例

下記の環境で動作確認をしました。

Fedora Linux 38 beta (Workstation Edition) x86_64
python3-3.11.3-1.fc38.x86_64
PySide6 6.5.0 (PyPI)

今回は大変簡単なプログラムのコーディングの例でしたが、それでもなかなか感動できる結果でした。果たして痒いところに手が届くような修正がやりとりできるのか興味があるところですが、テーマをしっかり決めてまたやり取りをしてみたいと思います。

参考サイト

  1. Chat GPT
  2. ChatGPT-4 と始める爆速 Python GUI 開発 - Qiita [023-03-18]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

0 件のコメント: