pythonのtkinterでメモ帳作り_Ctrl+0を押すとテキストエリアの行数に合わせて、ウィンドウの高さをリサイズする

習慣化2_10日目

どこかで記事をまとめたいが、少しずつ進めたことをメモしていく。

作成した関数

# テキストエリアに入力されている行数に合わせて、ウィンドウの高さをリサイズする関数
def window_resize_open(self):
    # 折りたたんだ状態から実行した場合最初に折りたたみを解除しておく
    oritatami_off()
    # テキストエリアに入力されているテキストの最終文字の情報を取得する
    window_end_pos = TextArea.index('end') # ic| window_end_pos: '6.2'
    win_en_pos_gyo,win_en_pos_retsu = window_end_pos.split('.') #ic| win_en_pos_gyo: '6', win_en_pos_retsu: '2'
    # 今のウィンドウ情報を取得しておく
    window_size_get() # ic| x: '592', y: '22', z_x: '564', z_y: '275'
    # テキストエリアの行数からウィンドウの高さを設定する。1行あたり18.5がよさそうかな
    y_takasa = math.ceil(50 + int(win_en_pos_gyo)*18.5)
    # もし計算した時の高さが650よりも大きかったら650にする。ノートPC画面のサイズに合わせた
    if y_takasa > 650:
        y_takasa = 650
    # ウィンドウをリサイズする
    root.geometry('%dx%d' % (int(x),y_takasa))
  
  
  
  
# メイン内での処理
if __name__ == '__main__':
    (snip)
    root.bind_all("<Control-KeyPress-0>", window_resize_open)

参考にしたページ

テキストエリアの情報を取得する

blog.narito.ninja

Textウィジェットでできることが、めちゃくちゃ分かりやすく整理されている

    # テキストエリアに入力されているテキストの最終文字の情報を取得する
    window_end_pos = TextArea.index('end') # ic| window_end_pos: '6.2'
    win_en_pos_gyo,win_en_pos_retsu = window_end_pos.split('.') #ic| win_en_pos_gyo: '6', win_en_pos_retsu: '2'

小数点以下を切り上げる

math.ceil()について
note.nkmk.me

# 切り上げ切り捨てに使用する
import math
(snip)

    # テキストエリアの行数からウィンドウの高さを設定する。1行あたり18.5がよさそうかな
    y_takasa = math.ceil(50 + int(win_en_pos_gyo)*18.5)

いつもありがとうございます!