第5章:ソートを追加(ヘッダークリックで昇順/降順)

python

目的

ヘッダー左クリックでその列を昇順/降順にソートし、ヘッダーに ▲/▼ を表示します。

代表コード

def _on_sort_by(self, col: str):
    prev = self.sort_state.get(col)
    direction = "desc" if prev == "asc" else "asc"
    self._apply_header_sort(col, direction)
    self.apply_filter()  # 表示を再描画

def _apply_header_sort(self, col: str, direction: str):
    idx = self.data_columns.index(col)
    def keyfunc(item):
        row = item[1]
        v = row[idx] if idx < len(row) else ""
        try:
            return (0, float(v))  # 数値優先
        except Exception:
            return (1, str(v).lower())
    reverse = (direction == "desc")
    self.data_rows.sort(key=keyfunc, reverse=reverse)
    self.sort_state = {col: direction}
    self.sorted_by = col

コツ

  • データ本体(self.data_rows)を並べ替えてから再描画する
  • ヘッダー文字列に ▲/▼ を付けると分かりやすい

前へ → 第4章
次へ → 第6章:ヘッダー右クリックでフィルタ

pythontkinter
スポンサーリンク
この記事を書いた人

運営者について

当サイトは、個人が運営する学習・記録ブログです。

AI・データサイエンス・自動化を中心に、
Python、G検定・DS検定の学習内容や、
実際に試しながら整理した知識をまとめています。

特定の企業や団体に属さない個人サイトとして、
学習過程で得た気づきや判断の整理を目的に運営しています。

「知識はあるが、どう使えばよいか分からない」
「情報が多く、判断に迷ってしまう」
といった状態を減らすことを目的に発信しています。

専門家として教える立場ではなく、
自分自身がつまずき、試し、整理してきた過程をそのまま共有するスタイルです。

用語の暗記やテクニックの紹介よりも、
・なぜそう考えるのか
・どの順番で判断するのか
・どこで迷いやすいのか
といった思考の整理を重視しています。

学び場をフォローする
学び場をフォローする
タイトルとURLをコピーしました