2017-06-16 24 views
1

リストボックスのサイズが互いに異なるウィンドウがあります。私はグリッドを使っています。リストボックスの下には、現在ウィンドウを移動してサイズを変更している行があります。ウィンドウとリストボックスのサイズが変更されている間はボタンを一定のままにしておきたい(ボタンは常にリストボックスの左下隅に残る)。Tkinter/Python - ウィンドウのサイズが変更されたときにボタンのサイズ変更を無効にする

これを行う簡単な方法はありますか?私はちょうど今日Tkinterを使い始めたので、ドキュメントでそれを見逃したり、グリッドレイアウトを混乱させたりするかもしれません。次のように

ボタンが設定されています

nextbutton = Button(self, width = 30, height = 30, image = ffbtn) 
nextbutton.image = ffbtn 
nextbutton.bind("<Button-1>", self.forward) 
nextbutton.grid(row = 10, column=4, sticky='w') 

私はすべてのスティッキの組み合わせが、それでも、私はしたくないこれ、彼らが周りに移動することができ、ボタンのサイズを変更していないものを試してみました。

編集:Heresは私が話していることの非常に基本的な例です。ウィンドウのサイズが変更されると、ボタンは互いに離れて移動します。私はそれを望んでいない。

横書きでは、すべてのスペースを占める列/行スパンで1つの列または行を使用しても、最後にすべてのグリッド構成が必要ですか?グリッド内のすべての行と列に非ゼロの重みを与えることによって

import tkinter 
from tkinter import * 
from tkinter import ttk 

class Application(tkinter.Tk): 
    def __init__(self, parent): 
     tkinter.Tk.__init__(self, parent) 
     self.minsize(300,300) 
     self.parent = parent 
     self.main() 

    def main(self): 

     self.grid() 

     listbox = tkinter.Listbox(self, width=20, height=25, bg = 'grey') 
     listbox.grid(padx=30, pady=30, columnspan=11, sticky='NEW') 

     bt1 = Button(self, width = 5, height = 5) 
     bt1.grid(row=10, column=0, padx=(30,0), sticky='w') 

     bt2 = Button(self, width = 5, height = 5) 
     bt2.grid(row = 10, column=1, sticky='w') 

     bt3 = Button(self, width = 5, height = 5) 
     bt3.grid(row = 10, column=2, sticky='w') 

     bt4 = Button(self, width = 5, height = 5) 
     bt4.grid(row = 10, column=3, sticky='w') 

     bt5 = Button(self, width = 5, height = 5) 
     bt5.grid(row = 10, column=4, sticky='w') 

     self.grid_columnconfigure(0,weight=1) 
     self.grid_columnconfigure(1,weight=1) 
     self.grid_columnconfigure(2,weight=1) 
     self.grid_columnconfigure(3,weight=1) 
     self.grid_columnconfigure(4,weight=1) 
     self.grid_columnconfigure(5,weight=1) 
     self.grid_columnconfigure(6,weight=1) 
     self.grid_columnconfigure(7,weight=1) 
     self.grid_columnconfigure(8,weight=1) 
     self.grid_columnconfigure(9,weight=1) 
     self.grid_columnconfigure(10,weight=1)  
     self.grid_rowconfigure(0,weight=1) 
     self.grid_rowconfigure(1,weight=1) 
     self.grid_rowconfigure(2,weight=1) 
     self.grid_rowconfigure(3,weight=1) 
     self.grid_rowconfigure(4,weight=1) 
     self.grid_rowconfigure(5,weight=1) 
     self.grid_rowconfigure(6,weight=1) 
     self.grid_rowconfigure(7,weight=1) 
     self.grid_rowconfigure(8,weight=1) 
     self.grid_rowconfigure(9,weight=1) 
     self.grid_rowconfigure(10,weight=1) 

app = Application(None) 
app.mainloop() 
+0

[mcve] –

+0

を作成してください^元の投稿に追加しました – mxvx

答えて

2

、あなたは明示的には、メインウィンドウでサイズを変更します。

あなただけのリストボックスには、サイズを変更するだけの行に非ゼロの重みを与え、リストボックスを含む列の一つにしたいので:詳細情報については

def main(self): 
    ... 
    # The default weight of all rows/columns is 0. Only modify it for row 0 and column 10 
    self.grid_rowconfigure(0, weight=1) 
    self.grid_columnconfigure(10, weight=1) 

packのドキュメンテーションをチェックし、 gridおよびplaceの方法。

関連する問題