質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2070閲覧

【Tkinter】Panedwindowの初期値を設定したい

harekyon

総合スコア17

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/07/24 04:27

##環境

  • windows10
  • pycharm COMMUNITY 2020.1.2

##質問概要
私はPythonでペイントソフトを作っています。画面を分割するためにPanedWindowを使ってみたのですが、以下の様にコードを構成した際、最下層パネルの初期値を設定することが出来ません。どのようにして設定することが出来るでしょうか。

##コードの説明
Panedウィンドウを作る際の最上位ウィジェットとしてpanedMainを配置します(子は縦に追加される)。その親子関係として、pw_top, pw_middle, pw_bottomの3つの関係を作ります。また、pw_middleにも親子関係(子は横に追加します)を作り、pw_middle_tool, pw_middle_editとします。

python

1import tkinter as tk 2from tkinter import * 3 4class Draw_Application(object): 5 def __init__(self): 6 self.root = Tk() 7 """ 8 **PanedWindowの親子関係** 9 panedMain 10 |---- pw_top 11 | |---propaty_area 12 | 13 |---- pw_middle 14 | |-------------------- 15 | | | 16 | pw_middle_tool pw_middle_edit 17 | 18 |---- pw_bottom 19 """ 20 self.panedMain = tk.PanedWindow(self.root,orient="vertical",sashwidth=2,handlepad=0) 21 self.panedMain.pack(expand=True, fill=BOTH) 22 self.pw_top = tk.PanedWindow(self.panedMain,sashwidth=2) 23 self.pw_top.pack(expand=True,fill=BOTH) 24 self.pw_middle = tk.PanedWindow(self.panedMain,sashwidth=2) 25 self.pw_middle.pack(expand=True,fill=BOTH) 26 self.pw_bottom = tk.PanedWindow(self.panedMain, sashwidth=2) 27 self.pw_bottom.pack(side=BOTTOM,expand=True,fill=BOTH) 28 29 #一番上はheight=で調整できる 30 self.panedMain.add(self.pw_top,height=50) 31 #真ん中もheight=で調整できる 32 self.panedMain.add(self.pw_middle) 33 #一番下だけheight=で調整できない。 34 self.panedMain.add(self.pw_bottom,height=300) 35 36 self.propaty_area = tk.Label(self.pw_top,bg="#3F3F3F") 37 self.pw_middle_tool = tk.Label(self.pw_middle, bg="#393939",bd=0) 38 self.pw_middle_edit = tk.Label(self.pw_middle, bg="#3F3F3F") 39 self.console_area = tk.Label(self.pw_bottom, bg="red") 40 41 self.pw_top.add(self.propaty_area) 42 self.pw_middle.add(self.pw_middle_tool,width=100) 43 self.pw_middle.add(self.pw_middle_edit) 44 self.pw_bottom.add(self.console_area) 45 46 47 self.c = Canvas(self.pw_middle_edit, bg='white', width=100, height=100) 48 self.c.pack(anchor=tk.CENTER,expand=1) 49 self.root.geometry("500x500") 50 51 self.root.mainloop() 52 53Draw_Application()

##わからないところ
イメージ説明
self.panedMain.add(self.pw_bottom,height=300)は最下層パネルを親ウィジェットに追加した文です。実際にheightの数値を変えていただくと分かる思いますが、このパネルだけ数値指定が出来ません。画像の赤のエリアです。

どのように修正すればよいでしょうか。回答お待ちしております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

stretchオプション を指定します。

原因は、デフォルト値が

last

Only if this pane is the last pane (right-most or bottom-most) will it stretch. This is the default value.

height設定は有効ですが、その後に最後尾のパネルが伸張してる為だと思われます。

イメージ説明

python

1 #一番上はheight=で調整できる 2 self.panedMain.add(self.pw_top,height=50) 3 #真ん中もheight=で調整できる 4 self.panedMain.add(self.pw_middle, stretch="always") 5 #一番下だけheight=で調整できない。 6 self.panedMain.add(self.pw_bottom,height=100, stretch="never") 7

ちなみに、PanedWindowやNotebook等に add() で追加するウィジェットは
pack() がなくても表示されます。

self.panedMain = tk.PanedWindow(self.root,orient="vertical",sashwidth=2,handlepad=0) self.panedMain.pack(expand=True, fill=BOTH) # <-- ここは必要 self.pw_top = tk.PanedWindow(self.panedMain,sashwidth=2) # self.pw_top.pack(expand=True,fill=BOTH) # <-- 省略可 self.pw_middle = tk.PanedWindow(self.panedMain,sashwidth=2) # self.pw_middle.pack(expand=True,fill=BOTH) # <-- 省略可 self.pw_bottom = tk.PanedWindow(self.panedMain, sashwidth=2) # self.pw_bottom.pack(side=BOTTOM,expand=True,fill=BOTH) # <-- 省略可

投稿2020/07/24 05:54

teamikl

総合スコア8664

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

harekyon

2020/07/27 08:47

正しく動作しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問