TkinterGUIライブラリを使用してPythonでデスクトップアプリの作成を開始する

Tkinterはグラフィカルユーザーインターフェイス(GUI)ツールキットであり、デスクトップアプリの作成におけるPythonの力を探求したい場合に試してみる必要があります。

ここでは、TkinterGUIモジュールの基本を見ていきます。

Tkinterのセットアップ

通常、Python 3以降の新しいバージョンのPythonをインストールした場合は、 tkinterを個別にインストールする必要はありません。ただし、ライブラリは古いPythonバージョンでは機能しない場合があります。これらのOSには通常、デフォルトで古いバージョンのPythonが付属しているため、これはMacおよびLinuxユーザーに共通の問題です。

通常、 tkinterモジュールを使用するには、公式のpython.orgWebサイトから最新の互換性のあるバージョンのPythonをPCにダウンロードしてインストールするようにしてください。

あなたがMac上であれば、その代わりに、あなたがたActiveTcl、からTkinterのコンパイラの最新バージョンダウンロードすることができActiveStateのを

Tkinterの使い方

Tkinterは、組み込みのTKクラスに依存しています。また、GUI内のすべてのイベントをメインループにまとめます。このように、メインループラッパーはあなたのTkinterのコードが実行可能になります。

tkinterを始めるに

 from tkinter import Tk
Tk().mainloop()

上記のコードを実行すると、空のtkinterフレームが起動します。

ただし、Tkinterのカスタマイズ機能は、組み込みのウ​​ィジェットにあります。

これらのウィジェットを使用するには、tkinter import Tkを次のように置き換えることで、 tkinterからウィジェットをインポートできます。

 from tkinter import *
t = Tk()
t.mainloop()

ジオメトリ関数でウィンドウサイズを調整してから、 tkinterのタイトルウィジェットを使用してタイトルを指定することもできます。

 t = Tk()
t.geometry("600x600")
t.title("Tk Tutorial")
t.mainloop()

Tkinterラベルウィジェット

Tkinterでは、ラベルウィジェットを使用してGUIにプレーンテキストを直接書き込むことができます。

 t = Tk()
Label(t, text = "MUO Tkinter tutorial").grid()
t.mainloop()

ただし、 grid()メソッドはpack()メソッドの代替です。ウィジェットをGUIに貼り付けて、表示できるようにします。

ラベルテキストのフォントを指定することもできます。

 t = Tk()
Label(t, text = "MUO Tkinter tutorial", font=(60)).grid()
t.mainloop()

Tkinterでのボタンウィジェットの操作

ボタンは、 tkinterで最もよく使用されるウィジェットの一部です。また、さまざまな組み込みのボタンウィジェットを使用して、これらのクリック可能なボタンをGUIに追加できます。

ボタンウィジェットを使用してGUIにプライマリボタンを追加する方法は次のとおりです。

 t = Tk()
Button(t, text = "Clickable", bg = "black", fg = "white").grid()
t.mainloop()

bgキーワードとfgキーワードは、ボタンの背景色とボタン内のテキストの色をそれぞれ説明します。

高さ幅のパラメータを含めることで、ボタンの寸法を調整することもできます。

 t = Tk()
Button(t, text = "Clickable", bg = "black", fg = "white", height="2", width="10").grid()
t.mainloop()

そのための出力は次のとおりです。

また、ボタンをより視覚的に魅力的にしたい場合は、レリーフキーワードを含めて、その境界線の幅を調整できます。

 t = Tk()
Button(t, text="Clickable", bg="blue", fg="white",
height=2, width=10, relief=RAISED, borderwidth=6).grid()
t.mainloop()

そしてそれはこのように見えます:

RAISEDFLATに置き換えて、それがどのように行われるかを確認します。

ボタンはいくつでも追加できます。ただし、コンテンツの重複を避けるように注意してください。

重複を避けるために、各ボタンの行と列の位置を指定できます。

 t = Tk()
Button(t, text=1, bg="black", fg="white").grid(row=1, column=1)
Button(t, text=2, bg="black", fg="white").grid(row=2, column=1)
Button(t, text=3, bg="black", fg="white").grid(row=3, column=1)
Button(t, text=4, bg="black", fg="white").grid(row=4, column=1)
t.mainloop()

ただし、オプションのコマンドキーワードは、ボタンウィジェットにイベントを追加します。本質的には、ボタンをクリックしたときに特定のイベントを処理するオプションの関数を固定します。

たとえば、以下のコードは、ボタンをクリックすると、各ボタンの値に6を掛けます。そして、それは事前定義された関数に基づいています:

 def buttonpress(r):
r = 6*r
Label(t, text=r, font=(60)).grid(row=5, column=2)
t = Tk()
Button(t, text = 1, bg = "black", fg = "white", width = 10, height = 2,
command = lambda:buttonpress(1)).grid(row=1, column = 1, pady = 6)
Button(t, text = 2, bg = "black", fg = "white", width = 10,
command = lambda:buttonpress(2)).grid(row = 2, column = 1, pady = 6)
Button(t, text = 3, bg = "black", fg = "white", width = 10,
command = lambda:buttonpress(3)).grid(row = 3, column = 1, pady = 6)
Button(t, text = 4, bg = "black", fg = "white", width = 10,
command = lambda:buttonpress(4)).grid(row = 4, column = 1, pady = 6)
t.mainloop()

上記のコードでは、 buttonpressが乗算イベントを処理します。次に、 Buttonウィジェットは、匿名ラムダ関数を使用してそのイベントハンドラーを指します。

また、 padyキーワードが気になる場合は、行全体で各ボタンを明確に区切ります。これをpadxに置き換えると、列全体でボタンが分離されます。また、両方のキーワードを同時に使用して、必要に応じて両方の軸でボタンを分離できます。

とはいえ、前のコードで行ったように、すべてのボタンのホイールを再発明したくはありません。これにより、実行時間が遅くなるだけでなく、コードが読みにくくなり、絞り込むことができなくなります。

ただし、forループ使用して、この繰り返しを回避できます

したがって、上記のコードの短くて優れたバージョンは次のとおりです。

 def buttonpress(r):
r = 6*r
Label(t, text = r, font = (60)).grid(row = 5, column = 2)
t = Tk()
a = [1, 4, 6, 7]
for i in a:
j = lambda y = i:buttonpress(y)
Button(t, text = i, bg = "black", fg = "white", width = 10, height = 2,
command=j).grid(row = i, column = 1, pady = 6)
t.mainloop()

GUIにメニューボタンを追加するためのforループの力をさらに詳しく見ていきましょう。

 from tkinter import *
t = Tk()
buttons = ["Files", "Dashboard", "Menu", "Settings", "Help"]
m = 0
for i in range(len(buttons)):
# Get each text in the buttons array using a list index as m increases.
# Then let the column increase by 1 through the length of the array:

Menubutton(t, text=buttons[m], bg="blue", fg="white").grid(row=5, column=i)
m += 1
t.mainloop()

GUIにチェックボタンを追加するのも非常に簡単です。

 t = Tk()
Checkbutton(t, text = "Select option").grid()
t.mainloop()

前に行ったように、 forループを使用してそのチェックボタンを自由に乗算してください。

Tkinterのメニューウィジェットを使用してドロップダウンメニューを作成する方法

メニューウィジェットを使用すると、 tkinterでクリック可能なドロップダウンメニューをデザインできます。

前に述べたように、 tkinterは多くのウィジェットオプションを提供します。また、ドロップダウンメニューを設計するときにそれらのいくつかを使用します。

ドロップダウンの作成中に表示される一般的なウィジェットオプションのいくつかを次に示します。

  • add_cascade:メニューラベルを表示し、それが属する場所に貼り付けます。
  • add_separator:サブメニューの境界を定め、それらを上部サブメニューと下部サブメニューにグループ化します。
  • add_command:ここでサブメニューに名前を付けます。最終的には、イベントハンドラーを指定できるコマンド引数を受け入れます。

次の3つのオプションを使用するドロップダウンの例を次に示します。

 from tkinter import *
t = Tk()
fileOptions = ["New", "open", "Save", "Save as"]
fileOptionsAfterseparator = ["Import", "Export", "Exit"]
viewOptions = ["Transform", "Edit", "Create"]
menuBar = Menu(t)
file = Menu(menuBar, tearoff=0)
for i in fileOptions:
file.add_command(label=i, command=None)
file.add_separator()
for i in fileOptionsAfterseparator:
file.add_command(label=i, command=None)
menuBar.add_cascade(label="File", menu=file)
View = Menu(menuBar, tearoff=0)
for i in viewOptions:
View.add_command(label=i, command=None)
menuBar.add_cascade(label="View", menu=View)
t.config(menu=menuBar)
t.mainloop()

それがどのように見えるかを見てください:

Tkinterオプションメニュー

Optionmenuは、 Menuドロップダウンとは異なり、そのラベルを選択したオプションに切り替えます。

オプションメニューにはデフォルトのラベル値を指定できますが、デフォルトではラベルがありません。

関連:初心者に適したPythonプロジェクトのアイデア

tkinterでオプションメニューを作成する方法は次のとおりです。

 t = Tk()
Omenu = StringVar() #set the variable type of the options
Omenu.set("MUO") #specify a default value for the menu icon
OptionMenu(t, Omenu, "MUO", "Amazon", "Tutorial").grid()
t.mainloop()

Tkinterで再利用可能なデスクトップアプリを構築する

Tkinterは、インタラクティブなGUIデスクトップアプリの作成に役立つ一連の機能を提供します。他のPythonGUIモジュールのように柔軟な美化機能はあまりないかもしれませんが、それでも探索する価値のある便利なツールです。ここでの例は基本的な概念の一部のみを示していますが、 tkinterは試してみることができるより高度な機能を提供します。

そうは言っても、GUIデスクトップ計算機を作成したり、ミニテキストエディターを作成したり、在庫を管理するためのGUIデスクトップアプリを作成したりすることもできます。翼を広げてデスクトップGUI専攻になりたい場合は、Pythonの他のGUIモジュールをチェックすることもできます。