使用Configure with Tkin调整画布大小

2024-10-03 09:13:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Python和Tkinter创建一个棋盘游戏
我希望它有一个调整大小的功能,但我有两个图形用户界面。第一个是方板(Spielfeld),第二个是我想为播放器添加控制按钮的地方(Panel

因此,如果我想在主窗口中使用<Configure>来调整我的板的大小,它将用新的大小绘制画布(self.FensterGroesse

当我在resize中传递else-function时,If用例运行得很好 但是如果我用else函数运行这个程序,它会自动调整大小直到它的1倍大。不仅仅是画布,整个窗户。在

我知道问题是Panel是电路板的三分之一高,当self.Panel.config设置新的大小<Configure>时,它又被激活了。在

但我不知道怎么才能有这两个sanvase,一个是正方形,另一个是宽度相同的矩形,而平方位正好0.3*height

from Tkinter import *

class GUI:

    def resize(self, event):
        if event.height > (event.width*1.3):
            self.FensterGroesse = event.width-2
        else:
            self.FensterGroesse = int(event.height/1.3)-2
        self.Spielfeld.config(height=self.FensterGroesse, width=self.FensterGroesse)
        self.Panel.config(height=self.FensterGroesse*0.3, width=self.FensterGroesse)
        self.Spielfeld.pack()
        self.Panel.pack()

    def __init__(self):
        self.FensterGroesse = 400
        self.tkinter = __import__("Tkinter")
        self.Master = self.tkinter.Tk()
        self.Spielfeld = self.tkinter.Canvas(self.Master, height=self.FensterGroesse,
                                             width=self.FensterGroesse, bg='#ffdead')
        self.Panel = self.tkinter.Canvas(self.Master, height=self.FensterGroesse*0.3,
                                         width=self.FensterGroesse, bg='brown')
        self.Spielfeld.pack()
        self.Panel.pack()
        self.Master.bind("<Configure>", self.resize)
        self.Master.mainloop()

GUI()

Tags: selfmastereventconfigtkinterconfigurewidthelse