質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1491閲覧

【Tkinter】ドロップダウンリストの選択について

imotareobasan

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/01/15 02:29

編集2020/01/15 02:46

プログラミング初心者です。
pythonで計算アプリを作成しています。
ドロップダウンリストで1.足し算を選択すると入力した数にプラス100、2.引き算を選択すると入力した数からマイナス100をして計算結果を表示させる機能を持つアプリです。

足し算の計算は実装できました。
ただ、ドロップダウンリストで足し算か引き算かのどちらかを選択したうえで計算する実装方法を調べても解決せず困っています。
どなたか教えてください。

Python

1 2# -*- coding: utf-8 -*- 3from tkinter import * 4import tkinter as tk 5import tkinter.ttk as ttk 6 7def btn_click(): 8 num = int(box1.get()) 9 addition = num+100 10 box2.insert(0,addition) 11 12root=tk.Tk() 13root.geometry("400x300") 14root.title("計算アプリ") 15 16combo = ttk.Combobox(root, state="readonly",width=26) 17combo["values"] = ("1.足し算","2.引き算") 18combo.place(x=500,y=200) 19combo.pack() 20 21lavel1 = tk.Label(text="数値") 22lavel1.place(x=60, y=50) 23lavel2 = tk.Label(text="計算結果") 24lavel2.place(x=60, y=230) 25 26box1 = tk.Entry(width=20) 27box1.place(x=140, y=50) 28 29btn = tk.Button(root, text="実行", command=btn_click) 30btn.place(x=180, y=150) 31 32box2 = tk.Entry(width=20) 33box2.place(x=140, y=230)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

選択肢と選択後の関数を辞書データにしておくのが楽なのでは?

python

1from tkinter import * 2import tkinter as tk 3import tkinter.ttk as ttk 4 5 6def add(value): 7 return value + 100 8 9def sub(value): 10 return value - 100 11 12def nop(value): 13 return '' 14 15action = { 16 "1.足し算": add, 17 "2.引き算": sub, 18} 19 20def calculate(): 21 value = int(entry.get() or 0) # 空欄のときは0 22 calc = action.get(combo.get(), nop) # 選択肢にないときは nop関数 23 answer.delete(0, tk.END) 24 answer.insert(0, calc(value)) 25 26 27root = tk.Tk() 28root.geometry("400x300") 29root.title("計算アプリ") 30 31combo = ttk.Combobox(root, state="readonly", width=26) 32combo["values"] = list(action.keys()) 33combo.place(x=500, y=200) 34combo.pack() 35 36tk.Label(text="数値").place(x=60, y=50) 37tk.Label(text="計算結果").place(x=60, y=230) 38 39entry = tk.Entry(width=20) 40entry.place(x=140, y=50) 41 42tk.Button(root, text="実行", command=calculate).place(x=180, y=150) 43 44answer = tk.Entry(width=20) 45answer.place(x=140, y=230) 46 47root.mainloop()

投稿2020/01/15 02:48

編集2020/01/15 04:00
shiracamus

総合スコア5406

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

imotareobasan

2020/01/15 03:44

ご回答いただきありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問