790708 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

mlupinのブログ

mlupinのブログ

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

キーワードサーチ

▼キーワード検索

カレンダー

コメント新着

mlupin@ Re[1]:17平米が32平米に!(10/08) 藻緯羅さんへ いつもコメントありがとうご…
藻緯羅@ 先日、平日に、 先日、平日に、ビジネスホテルに泊まった…
mlupin@ Re[1]:レグザがキター!(07/31) 藻緯羅さんへ いつもコメントありがとうご…
藻緯羅@ Re:レグザがキター!(07/31) レグザ使ってます。  かなり古くて、アナ…
mlupin@ Re[1]:30万ポイントゲッター!(07/04) 藻緯羅さんへ いつもコメントありがとうご…

カテゴリ

バックナンバー

2023.03.10
XML
カテゴリ:Python
# -*- coding: utf-8 -*-
"""
Created on Tue Mar  7 10:28:38 2023
@author: mlupi
"""
"""
『日経ソフトウエア』2022年09月号(p.024~p.040)の特集記事
「特集2 Pythonでデスクトップアプリを作ろう 前編」に挑戦中。
なお、基礎については、当ブログの「Pythonことはじめ」などを参照してください。
"""
# 「Pythonでデスクトップアプリを作ろう 前編」 その13
#  目次
# Part2 「BMI計算機」を作ろう(p.029~p.033)
#     ③ BMI計算機のデスクトップアプリを作る(p.032~p.033)
#
# 『日経ソフトウエア』2022年09月号(p.024~p.040)
#
#  目次
#
# Part1 TkInterの基本をマスターしよう(p.024~p.028)
#     ① ウィジェットとウィジェットの親子関係(p.024~p.026)
#     ② イベント駆動型のプログラミング(p.026~p.027)
#     ③ ウィジェットの配置(p.027~p.028)
# Part2 「BMI計算機」を作ろう(p.029~p.033)
#     ① Buttonウィジェットの使い方(p.029)
#     ② grid関数でウィジェットを格子状に配置する(p.030~p.032)
#     ③ BMI計算機のデスクトップアプリを作る(p.032~p.033)
# Part3 「割り勘計算機」アプリを作ろう(p.034~p.037)
#     ① 2つの画面を切り替える(p.034~p.035)
#     ② Comboboxウィジェットを使う(p.035~p.036)
#     ③ 割り勘計算機のデスクトップアプリを作る(p.036~p.037)
# Part4 「4択クイズ」アプリを作ろう(p.037~p.040)
#     ① Radiobuttonウィジェットを使う(p.038~p.039)
#     ② CSVファイルを読み込む(p.039)
#     ③ 4択クイズのデスクトップアプリを作る(p.039~p.040)
# Part2 「BMI計算機」を作ろう(p.029~p.033)
#     ① Buttonウィジェットの使い方(p.029)
#     ② grid関数でウィジェットを格子状に配置する(p.030~p.032)
#     ③ BMI計算機のデスクトップアプリを作る(p.032~p.033)
#========== リスト7●「bmi.py」
# 「Grid関数」のテストプログラム。
#      「grid関数」の「rowspan」オプション、「columnspan」オプション
#      を使って、格子を結合する。(p.031~p.032)
#  GUIライブラリーの「Tkinter」モジュールを、「tk」という名前でインポートする。
import tkinter as tk
# BMI計算関数
def calc(weight, height):
    return weight / (height**2)
# 肥満度判定関数
def check(bmi):
    if bmi < 18.5:
        result = '低体重'
    elif bmi < 25.0:
        result = '普通体重'
    elif bmi < 30.0:
        result = '肥満度1'
    elif bmi < 35.0:
        result = '肥満度2'
    elif bmi < 40.0:
        result = '肥満度3'
    else:
        result = '肥満度4'
    return result
# 「Tk」関数を使って、ウインドウ(トップレベルtkウイジェット)を生成し、 「root」という名前を付ける
#  「Tk」関数は、「Tk」クラスから、ウインドウ(トップレベルtkウイジェット)を生成するための関数。
root = tk.Tk()
# ウインドウの表示タイトルを「ボタンテスト」にする。
root.title('肥満度チェック')
# ウインドウの中身の大きさを指定
#  ウインドウの中身(タイトルバーなどを除いた内部)の大きさを「geometry」関数で指定する。
# ('300x150')は、横サイズ=300ピクセル、縦サイズ=150ピクセルを表している
root.geometry('250x150')
# 「labelウイジェット」の生成
label_1 = tk.Label(root, text='体重')
label_2 = tk.Label(root, text='kg')
label_3 = tk.Label(root, text='身長')
label_4 = tk.Label(root, text='cm')
label_5 = tk.Label(root, text='身長と体重を入力してください。')
# 「Entryウイジェット」の生成
weight = tk.Entry(width=5)
height = tk.Entry(width=5)
# Buttonのハンドラ関数
def judgment():
    w = float(weight.get())
    h = float(height.get()) / 100
    s = check(calc(w, h))
    label_5['text'] = '肥満度:' + str(s)
    
# Buttonウイジェットの生成
button = tk.Button(root, text='BMI判定', command=judgment)
# 各列の割合を指定
root.columnconfigure(0, weight=1)
root.columnconfigure(1, weight=1)
root.columnconfigure(2, weight=1)
# 各行の割合を指定
root.rowconfigure(0, weight=1)
root.rowconfigure(1, weight=1)
root.rowconfigure(2, weight=1)
root.rowconfigure(3, weight=1)
# 「grid関数」でウイジェットを配置
#      「grid関数」の「rowspan」オプション、「columnspan」オプション
#      を使って、格子を結合する。(p.031~p.032)
label_1.grid(column=0, row=0, sticky=tk.E)
weight.grid(column=1, row=0)
label_2.grid(column=2, row=0, sticky=tk.W)
label_3.grid(column=0, row=1, sticky=tk.E)
height.grid(column=1, row=1)
label_4.grid(column=2, row=1, sticky=tk.W)
button.grid(column=0, row=2, columnspan=3)
label_5.grid(column=0, row=3, columnspan=3)
# ウインドウを表示して、「メインループ」に入る。
#  「mainloop(メインループ)」は、「イベントループ」で、ウインドウで発生する
# 「イベント」を待っている状態のループ。
root.mainloop()
#========== リスト7●「bmi.py」は、ここまで

リスト7●「bmi.py」の実行結果










お気に入りの記事を「いいね!」で応援しよう

最終更新日  2023.03.10 10:58:53
コメント(0) | コメントを書く



© Rakuten Group, Inc.
X