めちゃくちゃ寒くなってきた
習慣化2_18日目
書かない期間のほうが継続期間より長くなる…
朝家の近くの水が流れている公園の水が凍っていたらしい。寒いわけだ。
pythonのtkinterでメモ帳作り_改行したとき行頭にインテンドや箇条書きがあれば改行後も引き継ぐ_インテンドと数字箇条書き改修版
習慣化2_16日目
どこかで記事をまとめたいが、少しずつ進めたことをメモしていく。
前回作成した「改行したとき行頭にインテンドや箇条書きがあれば改行後も引き継ぐ」機能を一部改修した。
- 箇条書きがない場合、インテンドに半角スペースがドンドン追加されてしまう不具合を修正した
- 数字形式の箇条書き機能を追加した
作成した関数
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を開けるだけあけてみよう。
pythonのtkinterでメモ帳作り_改行したとき行頭にインテンドや箇条書きがあれば改行後も引き継ぐ
習慣化2_13日目
どこかで記事をまとめたいが、少しずつ進めたことをメモしていく。
ここで記載している内容を一部改修した記事↓
作成した関数
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)
改行するたびにチェックが入るからか、さすがに少しメモ帳が重くなったかも?
参考にしたページ
テキストエリアの情報を取得する
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()+" ")
いつもありがとうございます!