1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Python] tkinterについての備忘録

1
Posted at

はじめに

こんにちは。ご無沙汰しております。
投稿しようにも、何を題材にしたものかと悩み、気づけば10月に突入していました。
今年も残すところあと3か月。歳を重ねるにつれ、1年の進みが早く感じるようになってきました。加齢、怖い。

さて、題材がないと喚いたものの、今回は、Pythonの標準ライブラリである
tkinter
について書いていきたいと思います。

今回も、自分自身の備忘録的な記事となります。

経緯

そもそも、なぜTalend技術者であるはずの筆者が、PythonのGUIライブラリであるtkinterを触ることになったのか。
それは、「出退勤の雑務をボタン1つで済ませたい」という楽をしたいという技術者あるあるの考えからはじまりました。
弊社では、ブラウザ上で動作する勤怠管理システムを利用しています。
また、筆者の所属している部署では、上記の勤怠システムとは別に、Microsoft Teamsのチャネルに「業務開始」「業務終了」と投稿する社内ルールがあります。
でも、筆者は思いました。
「これ、ボタン1つでまとめてできたら楽じゃない?」
これが、2026年7月のことでした。

ただ、2026年7月時点の筆者は、GUIツール開発のノウハウを一切持っていません。
そこで「Copilot~」と、いつものようにCopilotを頼り、その結果、このtkinterを用いる方法を提示されました。
やり方がわかれば後は (たぶんきっと) 簡単、「とりあえずやってみるか」の精神で始めた次第です。

tkinterとは

公式ドキュメント

PythonでGUIを作成するためのライブラリ。
「習うより慣れろ」ということで、とりあえずいろいろ使ってみようと思います。

コーディングと実行

では、コーディングと実行。

最小実行

まずは、必要最小限のものを実行してみようと思います。

import tkinter

root = tkinter.Tk()
root.mainloop()

これを実行。

python main.py

すると、こんな画面ができました。

image.png

真っ白ですが、Windowsアプリっぽい感じで、いい感じですね。なお、拡大ボタンを押すと、

image.png

このように、拡大もできます。

ウィンドウのタイトル

現状では「tk」となっていますが、これだけでは味気ないですよね。
というわけで、ウィンドウタイトルを変えてみようと思います。
この場合、以下を追記します。

root.title("テスト画面")

サイズ設定

先ほどの画面は、画面サイズがかなり小さいように感じました。
というわけで、画面サイズの変更もしてみようと思います。
この場合、以下を追記します。

root.geometry("600x400")

なお、

root.geometry("600x400+x+y")

といった形で、ウィンドウの表示位置の調整ができます (画面左からxピクセル、画面上からyピクセルの位置にウィンドウが表示される) 。

他にも

# ウィンドウの最小サイズを指定
root.minsize(400, 300)

# ウィンドウの最大サイズを指定
root.maxsize(800, 600)

# サイズ変更不可 & 拡大ボタン非アクティブ化
root.resizable(False, False)

などが設定できます。

ボタンの配置

というわけで、次に、ボタンを配置してみたいと思います。
ボタンの配置は以下のように行います。

# ボタンの配置
button = tkinter.Button(root, text="ボタン")
button.pack()

ここまでを、実際のソースコードに記述し、実行してみます。

import tkinter

root = tkinter.Tk()
root.title("テスト画面")
root.geometry("600x400")
root.resizable(False, False)
button = tkinter.Button(root, text="ボタン")
button.pack()
root.mainloop()

すると、以下のような画面となりました。

image.png

ボタンを押すこともできるのですが、動作を指定していないため、現状では押せる「だけ」という状態です。

ボタン押下時の処理

さすがに味気ないので、ボタンを押したときに、「ボタンが押されました」というメッセージボックスを出すような実装をしてみようと思います。
まずは、ボタンが押されたときの動作を記述します。

from tkinter import messagebox

def button_click():
    messagebox.showinfo("メッセージ", "ボタンが押されました。")

次に、ボタンの方の設定を行います。
以下の記述を行います。

# ボタンの動作設定
button = tkinter.Button(root, text="ボタン", command=button_click)
button.pack()

これらを記述したところで、下記のコードを実行します。

import tkinter
from tkinter import messagebox

def button_click():
    messagebox.showinfo("メッセージ", "ボタンが押されました。")

root = tkinter.Tk()
root.title("テスト画面")
root.geometry("600x400")
root.resizable(False, False)
button = tkinter.Button(root, text="ボタン", command=button_click)
button.pack()
root.mainloop()

ウィンドウが表示されるので、ボタンを押下。
image.png

image.png
メッセージが表示されました。

なお、余談ですが、

def button_click(value):
    messagebox.showinfo("メッセージ", f"{value}")

このように、関数に値を渡したい場合

button = tkinter.Button(root, text="ボタン", command=lambda: button_click("テスト値"))
button.pack()

のように記載する必要があります。

おわりに

お疲れ様でした。
今回記載した以外にも、ボタンのデザイン変更など、いろいろと試していたことはあるのですが、書き始めたらきりがなくなりそうなので、今日はこのあたりにしておきます。そのうちやる気になったら記載するかもしれません。
実は、この記事を書いた時点で、ブラウザの操作までは実装できていたりします。
※本当はAPIで操作したかったのですが、ツールの作成元に問い合わせたところ、APIを公開していないと回答があったため、結局Chroniumを用いてブラウザを操作するような処理を実装しました。
こちらに関しても、機会があれば備忘録として記載するかもしれません。
期待せずにお待ちください。

以上、ここまでお読みいただきありがとうございました。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?