※このページではアフィリエイト広告を利用しています

【Python応用】Tkinterでアプリ作成-Windowの固定、拡大、縮小の有効・無効化方法-

Python

ここでは、Tkinterにおけるウィンドウのサイズを固定する、拡大/縮小の有効・無効にする方法についてまとめています。

この記事の対象

  • ウィンドウのサイズを固定する方法を知りたい方
  • ウィンドウの拡大だけをする方法を知りたい方
  • ウィンドウの縮小だけをする方法を知りたい方
スポンサーリンク
スポンサーリンク

ウィンドウのサイズを固定

import tkinter as tk

root = tk.Tk()
root.title("固定")
root.geometry("400x300")

# サイズを固定
root.resizable(False, False)

root.mainloop()

サイズを固定する場合は「***.resizable(False,False)」になります。幅と高さをFalseにすることで固定します。

ウィンドウの縮小のみ禁止

import tkinter as tk

def disable_resize(event):
    if event.width < root.winfo_reqwidth() or event.height < root.winfo_reqheight():
        root.geometry(f"{root.winfo_reqwidth()}x{root.winfo_reqheight()}")

root = tk.Tk()
root.title("縮小禁止")
root.geometry("400x300") 

# 縮小を禁止
root.bind("<Configure>", disable_resize)

root.mainloop()

ウィンドウの縮小だけを禁止する場合は幅と高さを取得し、次にEventを取得し比較することで縮小だけを禁止するようにしています。

「winfo_reqwidth」はウィンドウの幅、「winfo_reqheight」はウィンドウの高さを取得しています。

Eventではリサイズされた値を取得しています。

関数の呼び出しは「bind」を用いることでウィンドウのイベントが発生したら行っています。

ウィンドウの拡大のみ禁止

import tkinter as tk

def disable_expand(event):
    if event.width > root.winfo_reqwidth() or event.height > root.winfo_reqheight():
        root.geometry(f"{root.winfo_reqwidth()}x{root.winfo_reqheight()}")

root = tk.Tk()
root.title("拡大禁止")
root.geometry("400x300") 

#拡大を禁止
root.bind("<Configure>", disable_expand)

root.mainloop()

縮小のみの時と同じでbindでイベントを取得して、サイズを比較して拡大できないようにしています。

【補足】wiget.bindとは

基本的な型

widget.bind(sequence, callback, add=None)

「bind」メソッドは、ウィジェットに対してイベントとそれに関連する関数(イベントハンドラ)を結び付けるために使用されます。また、イベントが発生した時に実行されるコードを定義することができます。

項目内容
widgetイベントをバインドする対象のウィジェット
sequenceイベントの発生条件を指定する文字列。マウスボタンのクリック、ウィンドウのリサイズなどがある
callbackイベントが発生した時に呼び出される関数
addイベントの追加バインドを行うかどうかを指定するフラグ。新しいバインドが既存のバインドよりも前に配置される。デフォルトではNone

主なSequence一覧

<Button-1> または <1> マウスの左クリック
<Button-3> または <3> マウスの右クリック
<ButtonRelease-1>マウスの左ボタンを離した時
<ButtonRelease-3>マウスの右ボタンを離した時
<Return>キーボードのリターンキーが押された
<KeyPress-H>キーボードのhキーが押された
<Control-c>Ctrlキーを押しながらキーボードのcキーが押された
<Shift-c>Shiftキーを押しながらキーボードのcキーが押された
<Alt-c>Altキーを押しながらキーボードのcキーが押された
<Double-1>マウスの左ボタンをダブルクリック

使用例

クリックイベント 左クリック⇒Button-1

import tkinter as tk

def handle_left_click(event):
    print("Left Clicked!")

root = tk.Tk()

# ウィンドウ上で左クリックイベントを処理するためにbindメソッドを使用
root.bind("<Button-1>", handle_left_click)

root.mainloop()

上記のプログラムは、ウィンドウ上で左クリックをした時に関数を呼び出しています。

内容としては、左クリックしてコンソールに指定の文字列が出力されるものです。

クリックイベント 右クリック⇒Button-3

import tkinter as tk

def handle_right_click(event):
    print("Right Clicked!")

root = tk.Tk()

#ウィンドウ上で右クリックイベントした時の処理
root.bind("<Button-3>", handle_right_click)

root.mainloop()

上記のプログラムは、ウィンドウ上で右クリックをした時に関数を呼び出しています。

内容としては、右クリックしてコンソールに指定の文字列が出力されるものです。

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