Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在tkinter中设置按钮的宽度?_Python_Tkinter - Fatal编程技术网

Python 如何在tkinter中设置按钮的宽度?

Python 如何在tkinter中设置按钮的宽度?,python,tkinter,Python,Tkinter,我正在尝试用Tkinter用Python制作一个简单的GUI计算器。但是,按钮的宽度通常会减少1或2个像素。有没有办法强制所有按钮的宽度相同 我知道ipadx方法;但是,它会将像素添加到按钮的两侧。当按钮的宽度为奇数时,这会导致问题 那么,施加均匀宽度的最佳方法是什么 这是我的代码: self.SC.Ca.Btn7 = Tkinter.Button(self.SC.Ca.BtnFrame, text="7", bd=self.SCbw, fg=self.SCfg,

我正在尝试用Tkinter用Python制作一个简单的GUI计算器。但是,按钮的宽度通常会减少1或2个像素。有没有办法强制所有按钮的宽度相同

我知道ipadx方法;但是,它会将像素添加到按钮的两侧。当按钮的宽度为奇数时,这会导致问题

那么,施加均匀宽度的最佳方法是什么

这是我的代码:

self.SC.Ca.Btn7 = Tkinter.Button(self.SC.Ca.BtnFrame, text="7", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.Btn7.grid(column=0, row=0, padx=px, pady=py)

self.SC.Ca.Btn8 = Tkinter.Button(self.SC.Ca.BtnFrame, text="8", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.Btn8.grid(column=1, row=0, padx=px, pady=py)

self.SC.Ca.Btn9 = Tkinter.Button(self.SC.Ca.BtnFrame, text="9", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.Btn9.grid(column=2, row=0, padx=px, pady=py)

self.SC.Ca.Btn4 = Tkinter.Button(self.SC.Ca.BtnFrame, text="4", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.Btn4.grid(column=0, row=1, padx=px, pady=py)

self.SC.Ca.Btn5 = Tkinter.Button(self.SC.Ca.BtnFrame, text="5", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.Btn5.grid(column=1, row=1, padx=px, pady=py)

self.SC.Ca.Btn6 = Tkinter.Button(self.SC.Ca.BtnFrame, text="6", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.Btn6.grid(column=2, row=1, padx=px, pady=py)

self.SC.Ca.Btn1 = Tkinter.Button(self.SC.Ca.BtnFrame, text="1", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.Btn1.grid(column=0, row=2, padx=px, pady=py)

self.SC.Ca.Btn2 = Tkinter.Button(self.SC.Ca.BtnFrame, text="2", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.Btn2.grid(column=1, row=2, padx=px, pady=py)

self.SC.Ca.Btn3 = Tkinter.Button(self.SC.Ca.BtnFrame, text="3", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.Btn3.grid(column=2, row=2, padx=px, pady=py)

self.SC.Ca.Btn0 = Tkinter.Button(self.SC.Ca.BtnFrame, text="0", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.Btn0.grid(column=0, row=3, columnspan=2, ipadx=13, padx=px, pady=py)

self.SC.Ca.BtnPe = Tkinter.Button(self.SC.Ca.BtnFrame, text=".", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.BtnPe.grid(column=2, row=3, ipadx=2, padx=px, pady=py)



self.SC.Ca.OppBtnFrame = Tkinter.Frame(self.SC.Ca.MainFrame, bd=self.SCbw, bg=self.SCbg)
self.SC.Ca.OppBtnFrame.grid(column=1, row=2)


self.SC.Ca.BtnPN = Tkinter.Button(self.SC.Ca.OppBtnFrame, text="±", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.BtnPN.grid(column=0, row=0, ipadx=4, padx=px, pady=py)

self.SC.Ca.BtnSl = Tkinter.Button(self.SC.Ca.OppBtnFrame, text="/", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.BtnSl.grid(column=0, row=1, ipadx=3, padx=px, pady=py)

self.SC.Ca.BtnSu = Tkinter.Button(self.SC.Ca.OppBtnFrame, text="-", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.BtnSu.grid(column=0, row=2, ipadx=2, padx=px, pady=py)

self.SC.Ca.BtnSR = Tkinter.Button(self.SC.Ca.OppBtnFrame, text="√", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.BtnSR.grid(column=1, row=0, ipadx=1, padx=px, pady=py)



self.SC.Ca.BtnCl = Tkinter.Button(self.SC.Ca.OppBtnFrame, text="C", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.BtnCl.grid(column=0, row=3, ipadx=0, padx=px, pady=py)

self.SC.Ca.BtnSt = Tkinter.Button(self.SC.Ca.OppBtnFrame, text="*", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.BtnSt.grid(column=1, row=1, ipadx=1, padx=px, pady=py)

self.SC.Ca.BtnAd = Tkinter.Button(self.SC.Ca.OppBtnFrame, text="+", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.BtnAd.grid(column=1, row=2, ipadx=1, padx=px, pady=py)

self.SC.Ca.BtnEq = Tkinter.Button(self.SC.Ca.OppBtnFrame, text="=", bd=self.SCbw, fg=self.SCfg,
                                 bg=self.SCbg, activeforeground=self.SCfg, activebackground=self.SCbg, font=self.SCfob)
self.SC.Ca.BtnEq.grid(column=1, row=3, ipadx=1, padx=px, pady=py)

使用
网格
几何体管理器的
粘滞
选项将按钮“粘滞”到其包含单元格的所有四个侧面(即
Tkinter.N+Tkinter.S+Tkinter.e+Tkinter.W
)。如果要强制执行最小宽度,则可以设置按钮宽度,或者更好地使用
grid\u columnconfigure


也要考虑在复制UI时不要使用复制/粘贴——如果你有多个按钮有相同的选项,至少把它们放在字典里,使用一个函数或<代码>函数工具。Tkinter使编写干净的UI代码变得非常容易,稍后您会感谢您自己……

而不是非常冗长的
Tkinter.N+Tkinter.S+Tkinter.E+Tkinter.W)
您可以使用
nsew
。使用这样的Tkinter常数真的没有意义。底层的tk常量永远不会改变。Tk已经使用相同的值几十年或更长时间了。