gpt4 book ai didi

Python Tkinter 填充问题

转载 作者:太空狗 更新时间:2023-10-30 00:46:48 27 4
gpt4 key购买 nike

我正在学习 Tkinter 并构建一个简单的 8 拼图游戏。
(示例:http://www.permadi.com/java/puzzle8/)

每个数字都是一个 Canvas 对象,使用网格布局放置在 Frame 中。其中一个对象是在 Canvas 对象之间添加额外的填充。我将 Canvas 对象的边框宽度设置为 -2,这解决了一些人的问题,但这对我来说只是稍微减少了额外的填充。将此值设置为 -4 开始切入我的 Canvas 区域。

我假设网格布局的单元格有一些默认的填充或边框宽度,但我还没有找到删除它的方法。在 Canvas 对象上调用 grid() 时设置 padx、pady、ipadx、ipady 值似乎也无济于事。

我发现的另一个奇怪之处是,在为我使用 create_rectangle 的 Canvas 对象制作边框时,我必须从 4,4 开始 x_1 和 y_1,而不是 0,0 或 2,2,这是我期望的 2px边框。

这是我的代码。非常感谢任何帮助/建议/解决方法/其他。

#!/usr/bin/python

from Tkinter import *

class Number(Canvas):
def __init__(self, master=None, number=1):
Canvas.__init__(self, master, width=100, height=100, bd=-2)
self.create_text(50, 50, text=str(number), anchor=CENTER)
self.create_rectangle(4, 4, 98, 98, width=2)


class Application(Frame):
def create_widgets(self):
self.playarea = Frame(self, width=300, height=300)
self.playarea.grid_propagate(0)
self.playarea.grid()
self.playarea.numbers = []
for number in xrange(1, 10):
num_obj = Number(self.playarea, number)
self.playarea.numbers.append(num_obj)
row = number // 3
col = number % 3
num_obj.grid(row=row, column=col)

def __init__(self, master=None):
Frame.__init__(self, master)
self.grid()
self.create_widgets()


def main():
app = Application()
app.master.title("Sample Application")
app.mainloop()

if __name__ == '__main__':
main()

最佳答案

问题的最可能原因是您忽略了将每个 Canvas 的 highlightthickness 属性设置为零。此值控制小部件周围的彩色环,用于表示它具有焦点。

尝试解决这些类型的布局问题时,这里有一个技巧:为每个小部件提供不同的背景颜色(即:根窗口一种颜色,您的内部框架一种颜色, Canvas 一种颜色)。然后,您可以使用这些颜色作为指南来查看哪个小部件拥有您要消除的空间。

关于Python Tkinter 填充问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4646289/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com