英文:
How to get equal padding in between columns for my tkinter GUI pathfinder?
问题
以下是您提供的代码的翻译部分:
import tkinter as tk
import random
class PathFinder:
def __init__(self, parent):
self.parent = parent
self.parent.title("PathFinder game")
self.grid_design()
self.reset_button()
def grid_design(self):
self.labels = [[tk.Label(self.parent, text=str(random.randint(1, 10)), width=6, height=3, relief='solid') for _ in range(5)] for _ in range(5)]
self.labels[4][0].config(text="S")
self.labels[0][4].config(text="G")
for row in range(5):
for column in range(5):
self.labels[row][column].grid(row=row, column=column, padx=0, pady=0)
def reset_button(self):
self.reset_button = tk.Button(self.parent, text='创建新的随机场地', command=self.reset_grid)
self.reset_button.grid(row=5, column=2, pady=10)
def reset_grid(self):
for row in range(5):
for col in range(5):
if not (row == 4 and col == 0) and not (row == 0 and col == 4):
new_value = str(random.randint(1, 10))
self.labels[row][col].config(text=new_value)
root = tk.Tk()
app = PathFinder(root)
root.mainloop()
请注意,我已经翻译了代码中的注释和字符串,并进行了一些格式调整以确保其在中文环境中能够正常运行。如果您需要进一步的帮助,请告诉我。
英文:
I am currently creating a GUI with tkinter in python for a Pathfinder app. My code up until now has a grid of 5 by 5 with an S (starting point) and G (goal/ end point) and all cells in between are random numbers. I also have a reset button that re-generates the numbers randomly, creating a different field every time. The problem now is that I do not get the output I want. I want the cells of the grid to be next to each other, seperated only by lines (_). I already tried to set the padding to 0, but that did not help. The output now gives correct padding between the first and second column, but not between the second and third column. It seems as if the third column has a way larger width. Does anyone know how i can get the correct output of a grid that has equal width and height columns, not being seperated?
Here is the code I used:
import tkinter as tk
import random
class PathFinder:
def init(self, parent):
self.parent = parent
self.parent.title("PathFinder game")
self.grid_design()self.reset_button()
def grid_design(self):
self.labels = [[tk.Label(self.parent, text = str(random.randint(1, 10)), width=6, height=3, relief='solid') for _ in range(5)] for _ in range(5)]
self.labels[4][0].config( text = "S")
self.labels[0][4].config( text = "G")
for row in range(5):
for column in range(5):
self.labels[row][column].grid(row=row, column=column, padx=0, pady=0)
def reset_button(self):
self.reset_button = tk.Button(self.parent, text='Create new random field', command=self.reset_grid)
self.reset_button.grid(row=5, column=2, pady=10)
def reset_grid(self):
for row in range(5):
for col in range(5):
if not (row == 4 and col == 0) and not (row == 0 and col == 4):
new_value = str(random.randint(1, 10))
self.labels[row][col].config(text=new_value)
root = tk.Tk()
app = PathFinder(root)
root.mainloop()
答案1
得分: 1
以下是翻译好的部分:
这是因为您将一个长按钮放在第2列。 请改为将其放在第0列,使用columnspan=5
:
还请注意,def init(self, parent)
应该改为 def __init__(self, parent)
:
class PathFinder:
def __init__(self, parent): # 应该是 __init__ 而不是 init
...
...
def reset_button(self):
self.reset_button = tk.Button(self.parent, text='创建新的随机字段', command=self.reset_grid)
self.reset_button.grid(row=5, column=0, columnspan=5, pady=10)
...
结果:
英文:
It is because you put a long button at column 2. Put it in column 0 with columnspan=5
instead:
Note also that def init(self, parent)
should be def __init__(self, parent)
instead.
class PathFinder:
def __init__(self, parent): # should be __init__ instead
...
...
def reset_button(self):
self.reset_button = tk.Button(self.parent, text='Create new random field', command=self.reset_grid)
self.reset_button.grid(row=5, column=0, columnspan=5, pady=10)
...
Result:
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论