2017-04-02 100 views
1

如何对齐我的Radiobutton?我可以将空格添加到test4,但该解决方案似乎不正确。以下是目前的样子 - 如您所见text111111有额外的字符。我试过使用padx如何对齐tkinter小部件?

screenshot of current results

我的代码:

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

对不起我typod,对齐 – nooby

+0

你想要什么样的对齐方式?全部在左边?所有在同一行?所有在同一列? –

回答

2

您可以使用您的sticky=W里面.grid为所有的按钮,使他们在左边对齐。此外,您还可以包含pady = 20以使其不会一直走到左侧。

+0

比一路走到左边....有没有办法解决这一个按钮? – nooby

+1

没有你所有的按钮,也设置了'pady = 20'这样它不会一直走到左边 – abccd

+0

谢谢,它工作:) – nooby

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() 

可以使用Tkinter模块的N, S, W and E成员的任意组合。这个参数会让你的小部件粘在你指定的单元格的边上,有点像文本中的理由。如果您的窗口小部件可调整大小,例如Button,那么如果您使用所有N, S, W and E成员,窗口小部件也将自动调整大小以适应单元格。

重要的是要注意的是,这只能做很多事情,使小部件坚持细胞的边缘。有时需要实际调整单元格大小或将窗口小部件移至另一个单元格。

在您的示例图像中,您有Button s的设置尺寸大于默认尺寸(您提供的示例代码不完整)。这会导致单元格以及这些单元格所在的整个列变宽。在这种情况下,您可能需要使用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,我发现它是在过去非常有帮助。

作为旁注,请注意,您在Radiobutton的声明中错误地使用了variable关键字参数。您必须通过tk.StringVar,tk.IntVar或其他类似的对象,如here所述。