カテゴリーリスト

全てのカテゴリを設定した記事です。
常に一番上に表示されます。
乱雑に記事を作成しているため、カテゴリ毎に確認できればと思い作成しています。

pythonのtkinterでメモ帳作り_改行したとき行頭にインテンドや箇条書きがあれば改行後も引き継ぐ_インテンドと数字箇条書き改修版

習慣化2_16日目

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

tkrou.hatenablog.jp

前回作成した「改行したとき行頭にインテンドや箇条書きがあれば改行後も引き継ぐ」機能を一部改修した。

  • 箇条書きがない場合、インテンドに半角スペースがドンドン追加されてしまう不具合を修正した
  • 数字形式の箇条書き機能を追加した

作成した関数

def check_enter(self):
    # 改行したとき、もとの行のテキストを取得する
    # cursor_now = TextArea.index('insert -1lines') # ic| cursor_now: '1.0'
    pre_row_text = TextArea.get('insert -1lines', 'insert -1lines lineend')
    # re.matchで行頭の半角全角スペースタブやアスタリスクを取得
    gyoto = re.match(r'([  \t]*)([\*\+\-・])', pre_row_text) # ic| gyoto: <re.Match object; span=(0, 2), match='\t*'>
    # 取得した行頭がNoneじゃなかったら、その取得内容を改行後の先頭に挿入する
    if gyoto is not None:
        TextArea.insert('insert', gyoto.group()+" ")
        return

    # re.matchで行頭の半角全角スペースタブ+数字箇条書きを取得
    gyoto = re.match(r'([  \t]*)([0-9]{1,})\. ', pre_row_text) # ic| gyoto: <re.Match object; span=(0, 2), match='\t*'>
    # 取得した行頭がNoneじゃなかったら、その取得内容を改行後の先頭に挿入する
    if gyoto is not None:
        # 行頭のすペースを取得しておく
        gyoto_space = re.match(r'([  \t]*)', gyoto.group())
        # 取得した行頭の数字を取得して1加算する
        gyoto_count = re.search(r'([0-9]{1,})', gyoto.group())
        gyoto_count = int(gyoto_count.group())+1 # ic| gyoto_count: 2
        # その数字を改行後の先頭に追加する
        TextArea.insert('insert', gyoto_space.group()+str(gyoto_count)+". ")
        return

    # 行頭がスペース関連だけだった場合、つまり箇条書きではないがインテンドだった場合も維持する
    gyoto = re.match(r'([  \t]+)', pre_row_text) # ic| gyoto: <re.Match object; span=(0, 2), match='\t*'>
    # 取得した行頭がNoneじゃなかったら、その取得内容を改行後の先頭に挿入する
    if gyoto is not None:
        TextArea.insert('insert', gyoto.group())
  
  
# メイン内での処理
if __name__ == '__main__':
    (snip)
    root.bind("<KeyPress-Return>", check_enter)

あとやりたいこと

  • 箇条書き中に TAB や Shift+TAB でインテンドし、箇条書きの形式を変えたい * → - → + という感じ
  • 数字箇条書きのときも TAB や Shift+TAB でインテンドし、新しい1からの箇条書きになったりもとの数字に戻ったりしたい

K: P: T:

習慣化2_15日目

K:特に書くことが思いつかなくてもなんでいいから毎日更新するというは続けてたら良いかも。「なんもないけど…まぁそういえばあれあったかな」みたいな無理矢理ではないがひねりだそうという思考になりやすい。それが習慣化の第一歩なのだ!

P:でもやらない日もある。迷うというより、スポンと抜け落ちる感じ。一日のうちに書く時間がきまっていないせいか? 何かの作業のあと、みたいな感じで一連の流れに組み込めればよいのだけど。朝起きた直後だと本当にかくことなかったりするしなー。でもそれこそ何もないというのを毎朝書くようにしたらいいのか?

T:朝起きた最初にすることを記事の更新にした! まずは朝起きたらPCを開けるだけあけてみよう。

自作のexeがウィルスとして検出され自動削除されていた→ウィルスの脅威の詳細から対象のファイルを確認して、[許可する]

習慣化2_14日目

Excel+仮想デスクトップをスムーズに実施するために作成した自作のexeがウィルスとして検出され自動削除されていた。

昨日まで問題なかったのでソフトのアップデートでもあったのかも知れない。
クラウド上に保存していたので、ダウンロードしなおしたところ、何回でも検出されて削除されてしまう。

警告結果のウィンドウから、詳細を押すと対象のファイルが確認出来る。
そのファイルが問題なければ、[許可する]を選択してあげれば削除されなくなる。

あーびっくりした。

pythonのtkinterでメモ帳作り_改行したとき行頭にインテンドや箇条書きがあれば改行後も引き継ぐ

習慣化2_13日目

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

ここで記載している内容を一部改修した記事↓

tkrou.hatenablog.jp

作成した関数

def check_enter(self):
    # 改行したとき、もとの行のテキストを取得する
    # cursor_now = TextArea.index('insert -1lines') # ic| cursor_now: '1.0'
    pre_row_text = TextArea.get('insert -1lines', 'insert -1lines lineend')
    # re.matchで行頭の半角全角スペースタブやアスタリスクを取得
    gyoto = re.match(r'([  \t]*)([\*\+\-])|([  \t]+)', pre_row_text) # ic| gyoto: <re.Match object; span=(0, 2), match='\t*'>
    # 取得した行頭がNoneじゃなかったら、その取得内容を改行後の先頭に挿入する
    if gyoto is not None:
        TextArea.insert('insert', gyoto.group()+" ")
  
  
# メイン内での処理
if __name__ == '__main__':
    (snip)
    root.bind("<KeyPress-Return>", check_enter)

改行するたびにチェックが入るからか、さすがに少しメモ帳が重くなったかも?

参考にしたページ

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

blog.narito.ninja

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

    # 改行したとき、もとの行のテキストを取得する
    # cursor_now = TextArea.index('insert -1lines') # ic| cursor_now: '1.0'
    pre_row_text = TextArea.get('insert -1lines', 'insert -1lines lineend')

正規表現で行頭の文字列を取得する

re.matchについて
https://note.nkmk.me/python-re-match-search-findall-etc//note.nkmk.me

# 複数文字で区切ったりするため、正規表現を使用する
import re
(snip)

    # re.matchで行頭の半角全角スペースタブやアスタリスクを取得
    gyoto = re.match(r'([  \t]*)([\*\+\-])|([  \t]+)', pre_row_text) # ic| gyoto: <re.Match object; span=(0, 2), match='\t*'>
    # 取得した行頭がNoneじゃなかったら、その取得内容を改行後の先頭に挿入する
    if gyoto is not None:
        TextArea.insert('insert', gyoto.group()+" ")

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

プロセスに乗っている想いを伺う

習慣化2_12日目

誰かと仕事を分担する、というのは大変な作業だ、ということをつい忘れがちだ。

自分が受け取る側だったら、その人が今まで何を大切にどういう思いでそれを実施していたのかを
ちゃんと確認することを、自分も忘れないようにしようと思った。

スケジュール共有忘れてた稽古場所で作業した

習慣化2_11日目

夕方から場所を変えて作業してみたのだけど、家でやるより効率よくできたかもしれない。

家にいるときは「今日はやる気があるので準備時間とか移動時間分もったいないかも」とか思ったけど、家だと多分あそこまではできなかったな。

せっかく来たから、やそれ以外にやることが無い状態を作るのは大切っぽい。

ひとりじゃないというのも大きな要因の1つだと思うが。

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)

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