python custom tkinter - Divider

SwiftUIにおいては


VStackなどに

UIの要素を複数配置したときの


用途・目的などの区別がつきやすいように


各グループのあいだにDividerというクラスを

配置して、直感的にユーザーが把握しやすいようにしたりしますが、


python の custom tkinterでは


Dividerの役割をするクラスというのは用意されているのでしょうか?



PythonのCustomTkinterライブラリには、

直接的にSwiftUIの`Divider`に相当するクラスは

用意されていませんが、

簡単に同様の役割を果たすことができます。


カスタムウィジェットや基本的なスタイルを利用して、

**水平線**や**垂直線**を作成することで、

UIのセクションを区切ることが可能です。


以下に、CustomTkinterで`Divider`を模倣する例を示します:


### 水平線のDivider

```python

import customtkinter as ctk


# CustomTkinterのウィンドウを作成

app = ctk.CTk()

app.geometry("400x300")


# セクション1

label1 = ctk.CTkLabel(app, 

text="セクション1", font=("Arial", 16))

label1.pack(pady=10)


# Divider(水平線)

divider

 = ctk.CTkFrame(

app, height=2, fg_color="gray")

divider.pack(fill="x", padx=10, pady=5)


# セクション2

label2 = ctk.CTkLabel(

app, text="セクション2", font=("Arial", 16))

label2.pack(pady=10)


app.mainloop()


```


### 解説

- `CTkFrame`を利用して高さを2ピクセル程度に設定することで、

**線**のように見せています。


- `fill="x"`を指定することで、

ウィンドウの横幅全体に広がる線になります。


- `fg_color`プロパティを変更することで、線の色を設定できます。


---


### 垂直線のDivider


垂直線を使用する場合、`width`プロパティを設定し、

縦方向に配置することで作成できます。


```python

import customtkinter as ctk


# CustomTkinterのウィンドウを作成

app = ctk.CTk()

app.geometry("400x300")


# レイアウト(水平に配置する例)

frame = ctk.CTkFrame(app)

frame.pack(pady=20, padx=20, fill="x")


# セクション1

label1 = ctk.CTkLabel(frame, text="セクション1")

label1.pack(side="left", padx=10)


# Divider(垂直線)

divider

 = ctk.CTkFrame(frame, width=2, fg_color="gray")

 

divider.pack(side="left", fill="y", padx=5)


# セクション2

label2

 = ctk.CTkLabel(frame, text="セクション2")

label2.pack(side="left", padx=10)


app.mainloop()

```


---


### 他の工夫

- **色やデザインの変更**: 

`fg_color`を変更して色をカスタマイズ。


- **パディング調整**: 

`padx`や`pady`で適切なスペースを設ける。



CustomTkinterでは、

簡単な方法でSwiftUIの`Divider`に近いUIを作成できます。

この方法を使えば、

直感的で見やすいレイアウトを簡単に構築できます!





コメント