我如何对齐我的Radiobuttons?我可以添加空格,test4但该解决方案似乎不合适。这是目前的样子——正如你所看到的,text111111有额外的字符。我试过使用padx.

我的代码:
from tkinter import *
class GUI:
def __init__(self, master):
self.iconnum = IntVar()
self.master = master
self.master.title('test')
self.master.resizable(width=False, height=False)
self.master.maxsize(500, 250)
self.master.minsize(500, 250)
self.test1 = Radiobutton(master, text="test11111111", variable=self.iconnum,
value=1, )
self.test2 = Radiobutton(master, text="test2", variable=0, value=2, )
self.test3 = Radiobutton(master, text="test3", variable=0, value=3, )
self.test4 = Radiobutton(master, text="test4", variable=0, value=4)
self.test1.grid(row=2, columnspan=1)
self.test2.grid(row=2, columnspan=2)
self.test3.grid(row=2, column=1)
self.test4.grid(row=3, columnspan=1)
self.Checker = Radiobutton(master, text="test5", indicatoron=0, height=1, width=35,
value=0, command=self.icon_switcher) #var=Selection)
self.Turbo = Radiobutton(master, text="test6", indicatoron=0, height=1, width=35,
value=1, command=self.icon_switcher) #var#=Selection)
self.Checker.grid(row=1)
self.Turbo.grid(row=1, column=1, )
def icon_switcher(self):
print("Hello")
root = Tk()
gui = GUI(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
小智 6
您应该使用sticky关键字参数,以便在使用网格时更好地对齐您的小部件。
import Tkinter as tk
window = tk.Tk()
radio = tk.Radiobutton(window, text="I'm a radio")
radio.grid(column=0, row=0, sticky=tk.N+tk.S+tk.W+tk.E)
window.mainloop()
Run Code Online (Sandbox Code Playgroud)
您可以使用模块N, S, W and E成员的任意组合Tkinter。此参数将使您的小部件粘在您指定的单元格的两侧,有点像文本中的对齐方式。如果您的小部件可调整大小,例如使用Button,则如果您使用所有N, S, W and E成员,小部件也会自动调整大小以适合单元格。
需要注意的是,这只能使小部件粘在单元格的边缘。有时需要实际调整单元格大小或将小部件移动到另一个单元格。
在您的示例图像中,您的Buttons 设置的大小大于默认大小(您提供的示例代码不完整)。这会导致单元格以及这些Buttons的单元格所在的整个列变宽。在这种情况下,您可能希望使用columnspan关键字参数将您的列分成更小、可调整大小的部分,以便您的Radiobuttons 可以更好地对齐。
import Tkinter as tk
window = tk.Tk()
radio_one = tk.Radiobutton(window, text="I'm a radio")
radio_two = tk.Radiobutton(window, text="I'm another radio")
button = tk.Button(window, text="I am a very long button", width=50)
button.grid(row=0, column=0, columnspan=2, sticky=tk.N+tk.S+tk.W+tk.E)
radio_one.grid(column=0, row=1, sticky=tk.N+tk.W)
radio_two.grid(column=1, row=1, sticky=tk.N+tk.W)
window.mainloop()
Run Code Online (Sandbox Code Playgroud)
如果您想了解有关grid几何管理器可以使用哪些参数的更多信息,我建议您阅读本教程,我发现它在过去非常有帮助。
作为旁注,请注意您variable在Radiobuttons的声明中错误地使用了关键字参数。你必须通过无论是tk.StringVar,tk.IntVar或一些其他类似的物体,如所描述这里。
| 归档时间: |
|
| 查看次数: |
14266 次 |
| 最近记录: |