【问题标题】:Buttons layout not forming chessboard in frame按钮布局未在框架中形成棋盘
【发布时间】:2020-01-13 22:22:02
【问题描述】:

我正在制作一个国际象棋程序,我正在尝试使用网格方法来制作棋盘功能中的棋盘。但是当前的布局行为不端显示前两行,但行之间的间隙很大(我假设其他 6 个输出在窗口底部下方)有什么想法吗?在此先感谢

import tkinter as tk#imports the gui 


class Layout(tk.Tk):
    colours = ["#563a12", "#9f9362"]#square colours dark then light

    def __init__(self, n=8):
        super().__init__()
        self.n = n
        self.middleframe = tk.Frame(self, )
        self.middleframe.grid(row=0, column=3, rowspan=8, columnspan=8)

        self.canvas = tk.Canvas(self, width=1200, height=768, )
        self.canvas.grid(row=0, column=1, columnspan=8, rowspan=8)


        self.colourindex = 0
        self.square= (0,0)

        self.promotefont=("Segoe UI Symbol", 35)
        self.piecefont=("Segoe UI Symbol", 30) 

        self.newgame=tk.Button(self, text="New Game",  font=("Segoe UI", 15), command=self.drawboard)
        self.newgame.grid(row=0, column=0)

        def drawboard(self):

        x=0
        y=0
        for column in range(self.n):
            self.changecolours()
            x=x+1
            y=0
            for row in range(self.n):
                y=y+1
                colour = self.colours[self.colourindex] 
                thebuttons=(tk.Button(self.middleframe,  text="♚", bg=colour, borderwidth=2, relief="solid", font=self.piecefont,  ))
                thebuttons.grid(column=(x-1), row=(y-1))
                self.changecolours()    


    def changecolours(self):
        self.colourindex = (self.colourindex + 1) % 2

【问题讨论】:

  • 你可以试试这个问题的答案:stackoverflow.com/questions/7591294/…
  • 你的代码中的一些缩进被破坏了(def drawboard(self),或者它下面的代码)。
  • 画布的用途是什么?您组织事物的方式,所有按钮都在框架中,但画布被放在框架顶部,隐藏了所有按钮。这是故意的吗?

标签: python-3.x tkinter grid frame tkinter-layout


【解决方案1】:

这是因为正如 Bryan Oakley 所说,按钮顶部的框架只需重新排列以下四行代码即可解决问题


self.canvas = tk.Canvas(self, width=1200, height=768, )
self.canvas.grid(row=0, column=1, columnspan=8, rowspan=8)
self.middleframe = tk.Frame(self, )
self.middleframe.grid(row=0, column=3, rowspan=8, columnspan=8)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-22
    • 2016-02-02
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2011-10-13
    • 1970-01-01
    相关资源
    最近更新 更多