Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Tkinterでドロップダウンメニューを作成する方法

ナビゲーションは、あらゆるアプリケーションにおいて最も重要な要素の一つです。洗練されたナビゲーションは、ユーザー体験を視覚的にも操作的にも大きく向上させます。Tkinterを使えば、メニューやサブメニューを非常に効率的に作成できます。

Tkinterには、メニューを作成するための組み込み機能が用意されており、他のウィジェットやウィンドウから呼び出して利用できます。tkinter.Menuモジュールは、メニューアイテムに対してさまざまなプロパティを提供しています。これらのプロパティを使うことで、ボタンへのラベル付け、ボタンの状態切り替え、cascadeプロパティによるサブメニューの追加などが可能になります。

この記事では、tkinter.Menuとそのメニューアイテムのプロパティを使用して、ドロップダウンメニューを作成する方法を解説します。さらに、OptionMenuウィジェットを活用し、選択肢のリストとそれに関連付けるコマンドを持つメニューを作成します。

サンプルコード

from tkinter import *
win =Tk()
win.geometry("700x300")
label= Label(win, text= "Select any One Language!", font= ("", 10))
label.pack(pady=30)

#Access the Menu Widget using StringVar function
clicked= StringVar()
#Create an instance of Menu in the frame
main_menu = OptionMenu(win, clicked, "C++", "Java", "Python", "Rust","Go","Ruby")
main_menu.pack()

win.mainloop()

コードの解説

このサンプルコードのポイントは以下の通りです。

  • StringVar(): ドロップダウンで選択された値を保持するための文字列変数を作成します。OptionMenuウィジェットは、この変数と連動して動作します。
  • OptionMenu(win, clicked, ...): 第1引数に親ウィンドウ、第2引数にStringVar変数を指定し、その後に選択肢となる項目(C++、Java、Pythonなど)を列挙します。
  • label.pack(pady=30): ラベルをウィンドウ内に配置し、上下に余白を設けて見た目を整えています。

実行結果

上記のコードを実行すると、以下のように言語を選択できるドロップダウンメニューが表示されます。ユーザーがメニューをクリックすると、登録された選択肢の一覧が展開され、任意の項目を選択できるようになります。

Python Tkinterでドロップダウンメニューを作成する方法


  1. Python tkinterでボタンを作成する方法|標準tkinterとttkの違いも解説

    PythonのGUIライブラリ「Tkinter」には、ウィンドウ上にボタンを作成するためのさまざまな方法が用意されています。この記事では、標準のtkinterモジュールを使ったボタンの作成方法と、テーマ機能を持つtkinter.ttkモジュールを使ったボタンの作成方法の2通りを、サンプルコードとともにわかりやすく解説します。 tkinterモジュールでボタンを作成する 以下のプログラムでは、まずウィンドウを作成し、続いてButtonクラスを使ってボタンを生成しています。tkinterモジュール全体をインポートしているため、作成されたボタンには従来型のスタイル(テーマ)が適用されます。 主なパラ

  2. 【Python】Tkinterで作るカラーゲーム – 30秒で文字の色を当てるGUIゲーム開発

    GUIアプリケーションの開発において、Pythonの標準ライブラリ「Tkinter」は非常に人気が高く、初心者でも扱いやすいツールです。追加のインストール作業なしに使えるため、Tkinterを活用すればシンプルなGUIゲームでも手軽に開発できます。 この記事では、Tkinterを使った「カラーゲーム」の作り方を紹介します。このゲームでは、画面に表示される単語の文字色をプレイヤーが入力し、正解するたびにスコアが1点ずつ加算されます。制限時間は30秒で、使用される色は赤(Red)、青(Blue)、緑(Green)、ピンク(Pink)、黒(Black)、黄(Yellow)、オレンジ(Orange)、