tkinter

【Python/tkinter】PanedWindow(C#のSplitContainer相当)

C#では、SplitContainerを使ってPictureBoxのサイズなどを変更していたのですが、tkinterでは、このSplitContainerに相当するものがPanedWindowとなります。

PanedWindowのサンプルプログラムを以下示します。

(実行画面)

python tkinter PanedWindow

仕切り線の移動

python tkinter PanedWindow

 

(プログラム)

import tkinter as tk

class Application(tk.Frame):
    def __init__(self, master = None):
        super().__init__(master)

        self.master.geometry("300x200") # ウィンドウサイズ(幅x高さ)

        # PanedWindowの作成
        paned_window = tk.PanedWindow(self.master)
        # フレームの作成
        frame1 = tk.Frame(paned_window, width = 100, bg = "red")
        frame2 = tk.Frame(paned_window, width = 100, bg = "green")
        # フレームをPanedWindowに追加
        paned_window.add(frame1)
        paned_window.add(frame2)

        paned_window.pack(expand = True, fill = tk.BOTH)


if __name__ == "__main__":
    root = tk.Tk()
    app = Application(master = root)
    app.mainloop()

PanedWindowはC#のSplitContainerと似てはいるのですが、異なる部分もあります。

  • C#のSplitContainerでは、最初からPanel1,Panel2が配置されていますが、PanedWindowには何も配置されていない。(自分でウィジェットをPanedWindowに追加する必要があります。)
  • PanedWindowにはFrame以外にもLabelやButtonなどのウィジェットが配置できる。
  • ウィジェットを追加すると、ウィジェットとウィジェットの間に仕切り線(sash)が追加される。
  • PanedWindowには3つ以上のウィジェットを追加できる。
  • ウィンドウをリサイズした時に、一番右(もしくは一番下)のウィジェットのみがリサイズされる。

 

オプション

オプション名 説明
background 通常時(クリックされていないとき)の背景色を指定します。(bgと同じ)
bd 外枠の線の太さを指定します。
ただし、初期状態では枠線が表示されていないため、reliefで枠線のスタイルを指定する必要があります。(borderwidthと同じ)
bg backgroundと同じ
borderwidth bdと同じ
cursor ウィジェット上にマウスポインタがある際のカーソルの種類を指定します。
(参考)https://tkdocs.com/shipman/cursors.html
handlepad ハンドル(四角いマーク)の位置を指定します。
handlesize ハンドル(四角いマーク)の大きさを指定しますs。
height ウィジェットの高さを指定します。
opaqueresize 仕切り線(sash)を移動中に表示を更新する場合はTrue、更新しない場合はFalseを指定します。
【初期値】True
orient ウィジェットを横に並べる場合は tk.HORIZONTAL、縦に並べる場合は tk.VERTICALを指定します。
【初期値】tk.HORIZONTAL
sashpad 仕切り線(sash)の両側に追加する隙間の大きさを指定します。
sashrelief 仕切り線(sash)のスタイルを指定します。
【設定値】tk.RAISED, tk.GROOVE, tk.SUNKEN, tk.RIDGE, tk.FLAT
【初期値】tk.FLAT(枠線なし)
sashwidth 仕切り線(sash)の幅を指定します。
【初期値】3
showhandle ハンドルと呼ばれる四角い印を仕切り線上に表示する場合はTrue、表示しない場合はFalseを指定します。
【初期値】False
width ウィジェットの幅を指定します。

メソッド

メソッド 説明
add(child[, option=value] …) ウィジェットをPanedWindowに追加します。
forget(child) 追加したウィジェットを削除します。
identify(x, y)
panecget(child, option)
paneconfig(child, option=value, …)
panes() PanedWindowに追加されているウィジェットのリストを取得します。
remove(child)
追加したウィジェットを削除します。
sash_coord(index)
仕切り線(sash)の位置を取得します。
sash_place(index, x, y) 仕切り線(sash)の位置を指定します。
indexは仕切り線の順番0, 1, 2・・・

 

コメント

タイトルとURLをコピーしました