LoginSignup
3
6

More than 5 years have passed since last update.

AppjarをつかってPythonでGUIプログラミング

Last updated at Posted at 2017-08-26

概要

AppjarというTKinterのラッパーを使って、GUIを持ったPythonアプリケーションを作成する。

環境

OS: Windows10
Python: 2.7.15

インストール

pip install appjar

使い方

基本的な流れとしては以下のようになります。
①ライブラリインポート
②GUIインスタンス(ベース)作成
③ウィジェットを追加
④Buttonなどのイベントを発生させるウィジェットに対して、対応する関数を作成
⑤GUIを起動

詳しくは公式を参照してください。
以下は公式にあるHello Worldを少しだけ変えたものです。

SimpleGUI.py
# -*- coding: utf-8 -*-

# ①ライブラリのインポート
from appJar import gui

# ②GUIのインスタンスを作成
# 書式: app = gui("Window name","vertical x width")
app = gui("Login Window", "400x200")

# 全体的な背景色、文字色とフォントの指定
app.setBg("black")
app.setFg("white")
app.setFont(16)

# ③GUI上のイベントと連動するための関数を定義
def press(button):
    if button == "Cancel":
        app.stop()
    else:
        usr = app.getEntry("Username")
        pwd = app.getEntry("Password")
        print("User:", usr, "Pass:", pwd)

# ④ベースのインスタンスにウィジェットを追加していく。
app.addLabel("title", "Welcome to appJar")
app.setLabelBg("title", "lightblue")
app.setLabelFg("title", "black")

app.addLabelEntry("Username")
app.addLabelSecretEntry("Password")

# "Submit","Cancel"という2つのボタンを作成し、それに対応するアクションとしてpress関数を指定
app.addButtons(["Submit", "Cancel"], press)

# "Username"にフォーカスをセット
app.setFocus("Username")

# ⑤GUI起動。この後には基本的にコードは書かないこと。
app.go()

大雑把な覚え方としては、gui()のアトリビュートは、
(add or set) + (ウィジェット名) + (パラメータ名)
引数は、
("アトリビュート名", "パラメータの値")
となっているようです。addではパラメータの部分は引数部分にしかないケースもあります。
例えば、app.setLabelBg("title", "lightblue")であれば、
titleという名前の、Labelというウィジェットの、Bgというパラメータの値を、
lightblueという値に、変更(set)しているという形です。

補足

使用可能なウィジェットの一覧
http://appjar.info/pythonWidgets/
ただ、ここには各ウィジェットに対して変更可能なパラメータの一部が書いてあるだけです。例えば、ここだけ見るとMessageには背景とか設定できない?となりますが、そんなことはなくて、基本的なパラメータ(Bg,Fg,Widthなど)は共通です。
こちらを見ると、設定可能なパラメータがより詳しく書いてあります。

まとめ

Appjarは個人的にはTKinterよりも直感的でわかりやすいと思います。
ただドキュメントの配置とか少しわかりにくかったので、使い始めのハードルが少し高い気がします。この記事がそのヘルプになれば幸い。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6