如何调整GraphWin窗口的大小?

时间:2014-07-23 01:20:32

标签: python zelle-graphics

我正在使用Zelle的图形库来做一些在线课程。我正在研究的部分工作似乎假设我可以调整现有GraphWin窗口的大小。但是之前在课程中没有涉及到这一点,并查看了graphics.py的文档,我没有看到实现这一目标的方法。我在GraphWin对象周围戳了一下,似乎没有任何东西改变窗口的大小。是否可以调整GraphWin窗口的大小?

我试过了:

from graphics import *
new_win = GraphWin('Test', 300, 300)
new_win.setCoords(0, 0, 100, 200)
new_win.width = 100

3 个答案:

答案 0 :(得分:1)

Zelle的图形库没有在绘制窗口后调整窗口大小的方法。

答案 1 :(得分:1)

setCoords()方法仅在现有窗口中创建一个新的虚拟坐标系。

我们可以通过降低到tkinter级别并专门研究GraphWin来实现满足您需求的足够功能:

from graphics import *

class ResizeableGraphWin(GraphWin):

    """ A resizeable toplevel window for Zelle graphics. """

    def __init__(self, title="Graphics Window", width=200, height=200, autoflush=True):
        super().__init__(title, width, height, autoflush)
        self.pack(fill="both", expand=True)  # repack?

    def resize(self, width=200, height=200):
        self.master.geometry("{}x{}".format(width, height))
        self.height = int(height)
        self.width = int(width)

# test code

win = ResizeableGraphWin("My Circle", 100, 100)
win.setBackground('green')

c = Circle(Point(75, 75), 50)
c.draw(win)  # should only see part of circle

win.getMouse() # pause for click in window

win.resize(200, 400)  # should now see all of circle

win.getMouse() # pause for click in window

c.move(25, 125)  # center circle in newly sized window

win.getMouse() # pause for click in window

c.setFill('red')  # modify cirlce

win.getMouse() # pause for click in window

win.close()

自从我叫super()以来的Python 3实现。可能可以对Python 2进行改造。

答案 2 :(得分:0)

我刚刚发现了怎么做

from graphics import *
win= GraphWin("Person",400,400)