如何调整我的Radiobutton
?我可以向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()
答案 0 :(得分:3)
您可以在sticky=W
内使用.grid
用于所有按钮,使其在左侧对齐。而且你还可以包括pady = 20
,使其不会一直向左移动。
答案 1 :(得分:3)
您应该使用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()
您可以使用N, S, W and E
模块的Tkinter
成员的任意组合。此参数将使您的窗口小部件粘贴到您指定的单元格的两侧,有点像文本中的对齐。如果您的窗口小部件可以调整大小,例如使用Button
,则如果您使用所有N, S, W and E
成员,窗口小部件也会自动调整大小以适合单元格。
需要注意的重要一点是,这只能使小部件粘到单元格的边缘。有时需要实际调整单元格大小或将小部件移动到另一个单元格。
在您的示例图片中,您的Button
的设置大小大于默认大小(您提供的示例代码不完整)。这导致单元格以及这些Button
的单元格所在的整个列变宽。在这种情况下,您可能希望使用columnspan
关键字参数将列划分为较小的,可调整大小的部分,以便您的Radiobutton
可以更好地对齐。
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()
如果您想了解grid
几何经理可以使用哪些参数的更多信息,建议您阅读this tutorial,我发现它在过去非常有用。
作为旁注,请注意您在variable
声明中使用Radiobutton
关键字参数不正确。您必须传递tk.StringVar
,tk.IntVar
或其他类似对象,如here所述。