3

キャンバス/ウィンドウを、ウィジェットに入れている情報のサイズまで拡大しないようにするのに苦労しています。スクロールバーを追加してキャンバスのサイズを制限したい。これは、より大きなプログラム内のポップアップ ウィンドウ用です。これが私のコードです

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()

基本的に、スクロールバーとキャンバスを含むフレームを持つ topLevel フレームを作成しようとしています。self.buttonbox(self.frameTopLevel) はいくつかのボタンを追加し、self.body(self.canvas) はユーザーが操作する一連のチェックボックスを追加します。

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

ありがとう

4

1 に答える 1

2

コードが機能するようになりましたが、いくつかのことをコメントアウトしたため、キャンバスにボタンが表示されませんでした。ただし、ウィンドウは画面全体を占有しませんでした...

ウィンドウ サイズ:トップレベルのジオメトリを設定してみませんか?

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

キャンバス:問題は、ウィジェットキャンバスに配置することです。この例をチェックしてみてください: effbot

于 2012-04-28T16:47:21.160 に答える