2012-04-28 7 views
3

キャンバス/ウィンドウをウィジェットに入れている情報のサイズに拡大するのに問題がありました。私はスクロールバーを追加し、キャンバスのサイズを制限したいと思います。これは、大きなプログラム内のポップアップウィンドウ用です。ここに私のコードは、基本的に私は、スクロールバーとキャンバスを含んで、その中のフレームを持っているトップレベルのフレームを作成しようとしていますTkinterでスクロールバーを実装するときのキャンバスサイズの問題

from Tkinter import * 
import os 
import tkMessageBox 

class ClusterDialog(Toplevel): 
    def __init__(self, parent, displayClass, clusterInfo, title = None):   
     Toplevel.__init__(self, parent) 
     self.transient(parent) 
     #top = self.top = Toplevel(parent) 
     if title: 
      self.title(title) 
     #set parent 
     self.parent = parent 
     #set class 
     self.dClass = displayClass 
     #dictionary to store the header data in 
     self.clusterInfo = clusterInfo   


     #stores checkbox variables 
     self.varList = None 
     self.boxList = None 
     self.name = None 

     self.frameTopLevel = Frame(self,bd=2, width = 200,height=300) 
     self.frameTopLevel.pack() 

     self.buttonbox(self.frameTopLevel) 
     self.frame = Frame(self.frameTopLevel, width = 200,height=300) 

     #frame=Frame(root,width=300,height=300) 
     self.frame.grid(row=0,column=0) 
     self.frame.pack() 

     self.canvas=Canvas(self.frame,bg='#FFFFFF',width=300,height=300,scrollregion=(0,0,500,1000)) 

     hbar = Scrollbar(self.frame,orient=HORIZONTAL) 
     hbar.pack(side=BOTTOM,fill=X) 
     hbar.config(command=self.canvas.xview) 
     vbar=Scrollbar(self.frame,orient=VERTICAL) 
     vbar.pack(side=RIGHT,fill=Y) 
     vbar.config(command=self.canvas.yview) 
     self.canvas.config(width=300,height=300) 
     self.canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set) 
     self.canvas.pack(side=LEFT,expand=True,fill=BOTH) 
     self.frame.config(height = 100) 
     self.body(self.canvas) 
     self.canvas.config(width=300,height=300) 
     self.grab_set() 

です。 self.buttonbox(self.frameTopLevel)はいくつかのボタンを追加し、self.body(self.canvas)はユーザが操作するためのチェックボックスを追加します。

このコードを実行すると、ウィンドウは常に画面のサイズに拡大され、スクロールバーは表示されますが、何もしませんがスクロールできません。どんな助けもありがたいですか?私は同様の問題で他のスレッドを見てきましたが、うまくいく修正を見つけることができませんでした。

おかげ

答えて

2

は、私はちょうどそれがボタンでキャンバスを移入していないので、しかし、私はいくつかのことをコメントアウトしていた動作するようにあなたのコードを得ました。ウィンドウは画面全体を占めていませんでした。

ウィンドウサイズ:トップレベルのジオメトリを設定しようとしましたか?

self.geometry("300x300+10+10") # numbers corresponding to [width]x[height]+[x offset]+[y offset] 

キャンバス:問題はキャンバスにウィジェットを置くことです。この例を確認することができます:effbot

+0

ありがとう、self.geometryメソッドは、ウィンドウを正しいサイズに保つのに効果的です。しかし、私はキャンバスに移入するときにスクロールバーをスクロールさせて追加のボタンにすることはできません。あなたは私がこれに使用できる追加のトリックを見に来るだろうか?ありがとう – Sugarloafer99

+0

私はそれを見ています... [effbot](http://effbot.org/zone/tkinter-scrollbar-patterns.htm)の例のようにすべてをやっているようです。 – Onlyjus

+0

私はcanvas.bbox(ALL)を呼び出すと、出力としてNoneを取得しています。これが私の問題かどうか誰にでも分かりますか?私は基本的にキャンバスに、以下のように与えられた一連のチェックボタンを設定しています。 var = IntVar() cb = Checkbutton(self.canvas、text = "checkbox"、variable = var) cb.grid(row = i) 、columnspan = 2、sticky = W) – Sugarloafer99

関連する問題