1

に複数のオブジェクトを作成していますTkinter.Canvas。ここでの問題は、一部のオブジェクトがキャンバスからはみ出していることです。スクロールバーがあってもキャンバスを展開してすべてのオブジェクトを表示するにはどうすればよいですか? 私が使用しているサンプルコードは次のとおりです。

from Tkinter import *
root = Tk()
f=Frame(root)
f.grid()
w=Canvas(f)
line1=w.create_line(50,50,150,150, width=5)
line2=w.create_line(100,100,100,350, width=3)
line3=w.create_line(150,150,150,450, width=3)
w.grid(row=0, column=0)
u=Frame(f)
u.grid(row=0, column=1)
root.mainloop()

ここline2line3はキャンバスの外です。

4

2 に答える 2

1

2つのを作成し、それらをキャンバスのおよびオプションScrollbarとして設定する必要があります。次に、を最大の幅と高さで構成すると、必要に応じてスコルバーが大きくなります。xscrollcommandyscrollcommandscrollregion

コードのをこの非常に基本的な実装に置き換えると、次Canvasの結果が表示されます。

from Tkinter import *

class ScrollableCanvas(Canvas):
    def __init__(self, master, *args, **options):
        self.frame = Frame(master)
        Canvas.__init__(self, self.frame, *args, **options)
        self.xscrollbar = Scrollbar(self.frame, command=self.xview, orient=HORIZONTAL)
        self.yscrollbar = Scrollbar(self.frame, command=self.yview)
        self.config(xscrollcommand=self.xscrollbar.set, yscrollcommand=self.yscrollbar.set)
    def create_line(self, *args, **options):
        Canvas.create_line(self, args, **options)
        self._resize(*args)
    def _resize(self, *args):
        maxwidth = max(args[0], args[2], int(self['width']))
        maxheight = max(args[1], args[3], int(self['height']))
        self.config(scrollregion=(0, 0, maxwidth, maxheight))
    def grid(self, *args, **options):
        self.frame.grid(*args, **options)
        Canvas.grid(self, row=0, column=0)
        self.xscrollbar.grid(row=1, column=0, sticky=E+W)
        self.yscrollbar.grid(row=0, column=1, sticky=N+S)
于 2013-03-19T19:21:47.033 に答える
1

Canvasオブジェクトを作成するときに必要なサイズを指定するだけです:

w=Canvas(f, width=200, height=500)

config()または、メソッドを使用して作成した後に、多くのウィジェットを再構成できます。

w.config(width=200, height=500)

ここで、私が見つけたいくつかのドキュメントには次のように書かれています:

ウィジェットについて説明する前に、サイズ、色、フォントなどの一般的な属性がどのように指定されているかを見てみましょう。

• 各ウィジェットには、フォント、色、サイズ、テキスト ラベルなどの属性など、ウィジェットの外観と動作に影響を与える一連のオプションがあります。

text='PANIC!'•またはなどのキーワード引数を使用して、ウィジェットのコンストラクターを呼び出すときにオプションを指定できますheight=20

• ウィジェットを作成した後、後でウィジェットの.config()メソッドを使用して任意のオプションを変更できます。ウィジェットの.cget()メソッドを使用して、任意のオプションの現在の設定を取得できます。

于 2013-03-19T10:42:42.067 に答える