Python §50 : tkinterの勉強(ウィンドウサイズ変更を禁止する) | hitochan007のブログ(Pythonの勉強ブログ)

hitochan007のブログ(Pythonの勉強ブログ)

★Pythonの勉強記録を中心に●pomera DM200、●パソコン、●グルメ、●愛犬(トイプードル) などについてのブログです

【過去の記事 Python:目次】

■tkinterの勉強(ウィンドウサイズ変更を禁止する)■
●1.サイズ変更禁止
●2.サイズ変更を縦方向だけ許可
●3.サイズ変更を横方向だけ許可



●1.サイズ変更禁止


前回、griderについて勉強しました。その起動画面がこちら↓

起動画面


そして、ウィンドウのサイズを適当に変更したのがこちら↓

サイズを変更したところ


サイズを変更できる方向を決める方法を説明します。


コード

root.resizable(0,0)



引数は(横方向フラグ、縦方向フラグ)となっています。
サイズ変更の許可:1 
サイズ変更の禁止:0

これを実行すると起動画面から変更ができないようになります。

実際のプログラムコードはこちら↓

if __name__ == '__main__':
root = tk.Tk()
root.resizable(0,0)#ウィンドウサイズ変更の禁止 (x,y)・・・0:禁止 1:許可
app = Application01(master=root,No=1)
app.mainloop()


メインルーチンでウィンドウのサイズ変更について制御する場合は、このように書きますが、メインウィンドウを生成しているクラスでも設定することができます。↓

class Application01(tk.Frame):		#★アプリケーションクラス
def __init__(self, master=None,No=1):
tk.Frame.__init__(self, master)
master.title(ver_name)
self.pack(expand=True,fill=BOTH)
self.configure(width=640,height=480,bg='lightgrey')

master.resizable(0, 0)#ウィンドウサイズ変更の禁止

def createWidgets_Test1(self): #各クラスのウィンドウを生成 test ファイル情報のみ

self.lf_1 = FileLabelFrame(self) #ファイル情報ラベルフレーム lf_1
self.lf_1.grid(row = 0,column=0,sticky=NSEW)
#self.lf_1.grid(row = 0,column=0)

self.grid_columnconfigure(0, weight = 1)
self.grid_rowconfigure(0, weight = 1)



ここで注意するのは、オブジェクトはrootではなくてmasterとなっているところです。

master.resizable(0, 0)

これは、メインルーチンからクラスを呼び出すときに

app = Application01(master=root,No=1)

のようにrootを渡して、クラス内ではmasterというオブジェクトになっているからです。



●2.サイズ変更を縦方向だけ許可


縦方向を許可するには、

root.resizable(0, 1)

でOKです。これで、縦だけはサイズを変更することができます。↓

縦方向だけ許可


●3.サイズ変更を横方向だけ許可


今回の場合は、横だけを許可すると実用的です。

root.resizable(1, 0)

とすれば、横だけが伸ばせます。↓

横方向だけ許可







●ウィンドウのサイズ変更 禁止/許可 の切り替え●


resizableメソッドを使うことで、ウィンドウのサイズ変更を許可したり、禁止したりすることができます。縦方向や横方向の一方向だけを変更許可することのできます。

両方伸縮できるようにしても問題がない場合が多いですが、見映えの問題だけですね。



チェック resizableメソッドでウィンドウサイズ変更を禁止できる
チェック resizable(x,y) 引き数は2つ。横方向がx,縦方向がyとして、0が禁止、1が許可
チェック メインルーチンで指定する場合はroot.resizable(0,0)のように生成したオブジェクト名を指定
チェック クラスにメインウィンドウのオブジェクトを渡している場合は、master.resizable(0,0)などと、クラスで使うオブジェクト名を使うこと
チェック 最後に設定した値が優先される(メインルーチンで設定してもクラスで設定した方あとであるので、そちらが優先される)






Python ブログランキングへ 
クリックしてね


新しいブログをはじめました。pythonの初級者から中級者まで、役に立つ記事を掲載していますので、ご覧ください。

特にカスタム関数(ユーザー定義関数)は、便利に使えると思います。

ぜひぜひこのリンクをクリックしてください 

 Pythonを勉強して株で儲けるブログ