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

習慣化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)

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

Excelで複数のシートを同じ印刷設定(印刷範囲の指定など)で印刷したい→シート複数選択して、目的の印刷設定で1ページだけ印刷すればOK

習慣化2_9日目

複数のシートを同じ印刷設定で印刷したい

シーン毎に分けた脚本とか、同じ要素だけどシートを分けているものにいて
同じ設定で印刷したかった。

そのときのメモ

設定したかった印刷設定

  • 選択した部分を印刷
  • 余白[狭い]
  • 全ての列を1ページに印刷

白黒なのかカラーなのかや用紙サイズの設定など、プリンター側で設定する項目はプリンター側で設定すればいけるらしい。
今回の設定はExcel側で設定する項目なので、これだとダメっぽい?

方法

タイトルのままだけど、
シートを複数選択した状態で 目的の印刷設定にして 1ページだけ印刷すれば
選択したシートの印刷設定がそれになる。

印刷する1ページを真っ白なページとかにしておけば、紙もインクも無駄にならない。

pythonのtkinterでメモ帳作り_ファイルに更新があったらバックアップする

習慣化2_8日目

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

作成した関数

def auto_backup():
    global file
    # ファイルの開かれた方法によってfileの中身が異なるので揃える
    if type(file) != str:
        file = file.name
    # ファイルのパスを取得
    file_path=os.path.dirname(file)
    # 現在のファイル名を取得する
    file_title_now=os.path.basename(file)
    # 現在のファイル名から位置情報・色情報・リマインダー・拡張子を取り除いた文字列を取得する。
    # これで同じファイルかどうか判断する。同じファイル名を使うこともあるかもだけど、まぁいいか。
    file_title_only=re.sub('\(\(.+\)\)|<.+>|【\[.+\]】|.txt', '',file_title_now)

    # もしBACKUPフォルダがなかったら作成する すでにあったら何もしない
    os.makedirs(file_path+'/BACKUP', exist_ok=True)

    # バックアップフォルダ内の同じタイトルファイルをリストで取得する
    backup_file_lists = list(Path(file_path+'/BACKUP').glob(file_title_only+'*.txt'))

    # もしリストが空だったら=初めてのバックアップだったらバックアップして終了
    if backup_file_lists == []:
        shutil.copy2(file, file_path+'/BACKUP/'+file_title_now)
        return

    # リストをファイル更新日で降順並び替え
    backup_file_lists.sort(key=os.path.getmtime, reverse=True)
    # リストの最初にいるファイル名=更新が最新のファイル名を取得する
    backup_file_latest=backup_file_lists[0].name #ic| backup_file_latest: 'as((644x188+104+14)).txt'

    # もし現在のファイルと最新バックアップファイルの内容に差があったらバックアップを実施する
    if not filecmp.cmp(file, file_path+'/BACKUP/'+backup_file_latest, shallow=True) :
        backup_now=datetime.datetime.now().strftime('%Y%m%d%H%M%S') # ic| backup_now: '20211201074127'
        backup_flie_name=re.sub('.txt', backup_now+'.txt',file_title_now)
        shutil.copy2(file, file_path+'/BACKUP/'+backup_flie_name)

参考にしたページ

文字列を置換する

note.nkmk.me

# 複数文字で区切ったりするため、正規表現を使用する
import re
(snip)
        # 現在のファイル名から位置情報・色情報・リマインダー・拡張子を取り除いた文字列を取得する。
        # これで同じファイルかどうか判断する。同じファイル名を使うこともあるかもだけど、まぁいいか。
        file_title_only=re.sub('\(\(.+\)\)|<.+>|【\[.+\]】|.txt', '',file_title_now)

複数パターンを置換したい場合は「|」(パイプ)で区切る。

フォルダ内のファイルを条件付きでリスト取得し、更新日が最新のものを取得する

pathlib Pathについて
note.nkmk.me

Path オブジェクトの更新日ソートについて
itpc.blog.fc2.com

# パスをオブジェクトとして操作・処理するライブラリ
from pathlib import Path
(snip)

        # バックアップフォルダ内の同じタイトルファイルをリストで取得する
        backup_file_lists = list(Path(file_path+'/BACKUP').glob(file_title_only+'*.txt'))

        # リストをファイル更新日で降順並び替え
        backup_file_lists.sort(key=os.path.getmtime, reverse=True)
        # リストの最初にいるファイル名=更新が最新のファイル名を取得する
        backup_file_latest=backup_file_lists[0].name #ic| backup_file_latest: 'as((644x188+104+14)).txt'

ファイルの中身を比較して、違ったら複製する

filecmpについて
docs.python.org

# ファイルを比較するライブラリ
import filecmp
# ファイル移動するときのライブラリ
import shutil
(snip)

    # もし現在のファイルと最新バックアップファイルの内容に差があったらバックアップを実施する
    if not filecmp.cmp(file, file_path+'/BACKUP/'+backup_file_latest, shallow=True) :
        backup_now=datetime.datetime.now().strftime('%Y%m%d%H%M%S') # ic| backup_now: '20211201074127'
        backup_flie_name=re.sub('.txt', backup_now+'.txt',file_title_now)
        shutil.copy2(file, file_path+'/BACKUP/'+backup_flie_name)

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

pythonのtkinterでメモ帳作り_完了したときにファイル名の冒頭に「完了_」を付けて、完了フォルダに移動する

習慣化2_6日目

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

作成した関数

def kanryo():
    # はい/いいえを選択するメッセージボックスを表示する
    response = messagebox.askyesno("完了処理", "このノートを完了しますか?")
    # はい=True/いいえ=Falseなので
    if response:
        # ファイルを保存しておく未保存の場合もここで保存できる
        saveFile("self")
        # いま開いているファイルの情報を確認する
        global file
        # ファイルの開かれた方法によってfileの中身が異なるので揃える
        if type(file) != str :
            file = file.name
        # ファイルのパスを取得
        file_path=os.path.dirname(file)
        # 現在のファイル名を取得する
        file_title_now=os.path.basename(file)
        # ファイル名の冒頭に完了_を追加する
        file_title_new=re.sub('^','完了_',file_title_now)
        # もし完了フォルダがなかったら作成する すでにあったら何もしない
        os.makedirs(file_path+'/完了', exist_ok=True)
        # ファイルをリネームしつつ移動
        shutil.move(os.path.join(file_path, file_title_now), os.path.join(file_path+'/完了', file_title_new))
        # 閉じる
        quitApp("self")

参考にしたページ

はい/いいえ の確認とそれぞれの場合の処理

pg-chain.com

# はいいいえのメッセージボックスを表示するライプラリ
from tkinter import messagebox
(snip)
    # はい/いいえを選択するメッセージボックスを表示する
    response = messagebox.askyesno("完了処理", "このノートを完了しますか?")
    # はい=True/いいえ=Falseなので
    if response:
        # はいの場合の処理

冒頭に文字列を挿入する

dot-blog.jp

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

        # ファイル名の冒頭に完了_を追加する
        file_title_new=re.sub('^','完了_',file_title_now)

複数行を処理するときにループでまわすのではなく
flags=re.MULTILINE
を指定するだけでOK というのはどこかで使いたいかも。

ファイルを移動してリネームする

note.nkmk.me

# ファイル移動するときのライブラリ
import shutil
(snip)

        # もし完了フォルダがなかったら作成する すでにあったら何もしない
        os.makedirs(file_path+'/完了', exist_ok=True)
        # ファイルをリネームしつつ移動
        shutil.move(os.path.join(file_path, file_title_now), os.path.join(file_path+'/完了', file_title_new))

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