Python 如何安装按钮';Tkinter的尺码是多少?
我已经使用Python 如何安装按钮';Tkinter的尺码是多少?,python,tkinter,Python,Tkinter,我已经使用python一周了,而使用Tkinter的时间更少,如果我的问题是典型的,那么很抱歉 我想为示波器编写一个简单的GUI。我遇到了一个问题,如何使按钮的大小和其他按钮的大小相适应。以下是我所接触到的内容(截图)。 您可能会注意到触发器和水平按钮的大小小于所有频道组。因此,如何使他们的规模与频道组规模完全匹配。这是我的一段代码 class StartPage(tk.Frame): def __init__(self, parent, controller): tk.Frame.
python
一周了,而使用Tkinter
的时间更少,如果我的问题是典型的,那么很抱歉
我想为示波器编写一个简单的GUI。我遇到了一个问题,如何使按钮的大小和其他按钮的大小相适应。以下是我所接触到的内容(截图)。 您可能会注意到
触发器
和水平
按钮的大小小于所有频道
组。因此,如何使他们的规模与频道组规模完全匹配。这是我的一段代码
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
startLabel = tk.Label(self,
text="Start page")
startLabel.pack(side="top")
quitGroup = tk.Frame(self)
quitGroup.pack(side="bottom")
quitButton = tk.Button(quitGroup, text="Quit",
command=quit,
bg="pink")
quitButton.grid(pady=10)
channelGroup = tk.Frame(self)
channelGroup.pack(side=tk.LEFT)
chLabel = tk.Label(channelGroup,
text="Channel group")
chLabel.grid(pady=10)
ch1Button = tk.Button(channelGroup, text="CH1 Settings",
command=lambda: controller.show_frame("CH1"))
ch1Button.grid(row=1, column=0)
ch2Button = tk.Button(channelGroup, text="CH2 Settings",
command=lambda: controller.show_frame("CH2"))
ch2Button.grid(row=2, column=0)
ch3Button = tk.Button(channelGroup, text="CH3 Settings",
command=lambda: controller.show_frame("CH3"))
ch3Button.grid(row=3, column=0)
ch4Button = tk.Button(channelGroup, text="CH4 Settings",
command=lambda: controller.show_frame("CH4"))
ch4Button.grid(row=4, column=0)
triggerGroup = tk.Frame(self)
triggerGroup.pack(side=tk.LEFT)
trigLabel = tk.Label(triggerGroup,
text="Trigger group")
trigLabel.grid(pady=10)
trigButton = tk.Button(triggerGroup, text="Trigger Settings",
command=lambda: controller.show_frame("Trigger"))
trigButton.grid(row=1, column=0)
trigButton.grid(ipady=43)#43? What?
horizGroup = tk.Frame(self)
horizGroup.pack(side=tk.LEFT)
horizLabel = tk.Label(horizGroup,
text="Horizontal group")
horizLabel.grid(pady=10)
horizButton = tk.Button(horizGroup,
text="Horizontal settings",
command=lambda: controller.show_frame("Horizontal"))
horizButton.grid(row=1, column=0)
horizButton.grid(ipady=43)#you again ...
如果这些按钮位于不同的帧中,是否可能?我想就这样吧。如果您想让这些小部件彼此完全对齐,最好将它们对齐在同一个网格上,并使用sticky
参数使按钮拉伸以填充单元格:
问题的根源在于您没有利用pack
和grid
的可用选项。例如,当您执行.pack(side='left')
时,您将由tkinter决定如何在分配的空间中垂直对齐小部件
默认情况下,tkinter会将项目垂直居中。由于各个部分(通道组、触发器组、水平组)的固有高度略有不同,因此无法使顶部和/或底部完全对齐
一个简单的修复方法是使用“fill”选项让小部件填充分配给它们的空间。如果您不想让它们填满分配的空间,您可以使用“锚定”选项将小部件锚定到顶部。您说“触发器和水平按钮比所有频道组都小”,但这些按钮看起来与整个组大小相同,并且比组中的按钮大得多。请澄清一下,您是否在问如何使触发器和水平按钮与其他按钮的大小相同?您希望按钮垂直居中还是顶部对齐?你能画一张图来显示你想要的东西吗?我希望触发器
按钮与所有频道按钮的位置相同。现在需要少一点。我不太明白你的意思。通过“它需要一点少”,你是在问沿着按钮顶部的一个像素的差异是什么?我画不出任何东西,这就是为什么我会尝试解释的原因。有两个组:频道组
和触发组
。在这些组中,有四个按钮和一个按钮。如果查看按钮CH1设置
的上限和触发设置
按钮的上限,您会注意到它们不在同一水平线上。您的代码在语法上不正确。它有奇怪的竖条。对不起。我没有注意到您没有为组使用单独的框架。这是不好的,因为,例如,标签不属于组,尽管它们应该属于组。
import tkinter as tk
root = tk.Tk()
chLabel = tk.Label(root, text="Channel group")
channelButtons = tk.Frame(root, bg='yellow')
ch1Button = tk.Button(channelButtons, text="CH1 Settings")
ch1Button.pack(fill='x')
ch2Button = tk.Button(channelButtons, text="CH2 Settings")
ch2Button.pack(fill='x')
ch3Button = tk.Button(channelButtons, text="CH3 Settings")
ch3Button.pack(fill='x')
ch4Button = tk.Button(channelButtons, text="CH4 Settings")
ch4Button.pack(fill='x')
trigLabel = tk.Label(root, text="Trigger group")
trigButton = tk.Button(root, text="Trigger Settings")
horizLabel = tk.Label(root, text="Horizontal group")
horizButton = tk.Button(root, text="Horizontal settings")
# Align the labels and buttons in a 2-by-3 grid
chLabel.grid(row=0, column=0, pady=10)
trigLabel.grid(row=0, column=1, pady=10)
horizLabel.grid(row=0, column=2, pady=10)
channelButtons.grid(row=1, column=0, sticky='news')
trigButton.grid(row=1, column=1, sticky='news')
horizButton.grid(row=1, column=2, sticky='news')
root.mainloop()