我有一个Tk界面,看起来像这样;
正如您所看到的,我有3个(如果您计算标签,则为4个)列。我希望条目(带有标签)与右侧的按钮不对齐,因为按钮和条目的数量会有所不同,对齐它们看起来会很糟糕。
另外,我使画布跨度为多行,因此条目将保留在画布的左侧,但这会在条目之间产生很大的余量。
我有两个相关的问题;
这是我的代码;
class Main(tk.Frame):
w = 600
h = 600
def __init__(self,parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
### variables ###
self.iterations = tk.StringVar()
self.angle = tk.StringVar()
self.axiom = tk.StringVar()
self.rule1 = tk.StringVar()
self.rule2 = tk.StringVar()
self.rule3 = tk.StringVar()
self.rule4 = tk.StringVar()
self.constants = tk.StringVar()
### Labels ###
tk.Label(self, text="Iterations").grid(column=0,row=0)
tk.Label(self, text="angle").grid(column=0,row=1)
tk.Label(self, text="axiom").grid(column=0,row=2)
tk.Label(self, text="rule1").grid(column=0,row=3)
tk.Label(self, text="rule2").grid(column=0, row=4)
tk.Label(self, text="rule3").grid(column=0, row=5)
tk.Label(self, text="rule4").grid(column=0, row=6)
tk.Label(self, text="constants").grid(column=0, row=7)
### Entries ###
tk.Entry(self, textvariable=self.iterations).grid(column=1,row=0)
tk.Entry(self, textvariable=self.angle).grid(column=1,row=1)
tk.Entry(self, textvariable=self.axiom).grid(column=1,row=2)
tk.Entry(self, textvariable=self.rule1).grid(column=1,row=3)
tk.Entry(self, textvariable=self.rule2).grid(column=1, row=4)
tk.Entry(self, textvariable=self.rule3).grid(column=1, row=5)
tk.Entry(self, textvariable=self.rule4).grid(column=1, row=6)
tk.Entry(self, textvariable=self.constants).grid(column=1, row=7)
### Render Button ###
tk.Button(self, text="render", command=self.render_image).grid(column=0, row=8, columnspan=2)
### Preset Buttons ###
tk.Button(self, text="Koch Snowflake", command=self.snowflake).grid(column=3, row=0)
tk.Button(self, text="Custom 1", command=self.custom1).grid(column=3, row=1)
### Canvas ###
self.cv = tk.Canvas(self, width=self.w, height=self.h, bg='white')
self.cv.grid(column=2, rowspan=9, row=0)
self.grid()
答案 0 :(得分:0)
在列中使用框架,然后您可以在每个框架中使用不同的管理器网格/包/位置
除此之外,您可以使用不同的按钮获得少量帧并显示/隐藏帧以替换所有按钮。 (grid_forget / pack_forget / place_forget)。