gpt4 book ai didi

python - 如何知道 Tkinter.Frame 中有多少行/列

转载 作者:行者123 更新时间:2023-12-02 16:50:39 25 4
gpt4 key购买 nike

预赛

在我的 Tkinter 应用程序中,我经常需要使用 grid_columnconfigure 方法对齐 Tkinter.Frame 的列。我使用简单统一的方法将小部件放置在框架中:

  1. 我有从 Tkinter.Frame 类继承的定制框架类
  2. 我使用 grid 管理器将小部件放置在定制的框架中,并且每一列都具有相同的权重

代码

定制框架

这是我的一个定制框架的代码。 SFrame 只是 Tkinter.Frame 的类包装器,具有以下样式:

class GroupFrame( SFrame ) :
"""
This class represents a frame with a title at the top
"""
def __init__( self, parent, style, title, **kwargs ) :
SFrame.__init__( self, parent, style, **kwargs )
self.config( borderwidth=5, relief=tk.SUNKEN )

self.style = style
self.title = title.upper()

self.CreateFrames()
self.FillFrames()


def CreateFrames( self ) :
self.titleFrame = SFrame( self, self.style )
self.titleFrame.pack( side="top", pady=10 )

self.contentFrame = SFrame( self, self.style )
self.contentFrame.pack( side="bottom", pady=(0, 10), fill='x' )


def FillFrames( self ) :
self.titleLabel = SLabel( self.titleFrame, self.style, text=str( self.title ) )
self.titleLabel.config( font=self.style.groupTitleFont, borderwidth=3, relief=tk.SUNKEN , padx=3)
self.titleLabel.pack( pady=(1, 5) )


def AlignColumns( self, nCols ): #<----- Look at this function
for i in range( nCols ):
self.contentFrame.grid_columnconfigure( i, weight=1 )

使用示例

下面是我如何使用它和结果(SButton 是具有样式的 Tkinter.Button 的类包装器):

#button to go to the common settings' page: settings for all channels
self.settingsFrame = GroupFrame( self.midFrame, self.style, "SETTINGS" )
self.settingsFrame.grid( row=0, column=0, pady=10, padx=10, sticky="ew" )

self.commonButton = SButton( self.settingsFrame.contentFrame, self.style,
text="Common Settings",
command=lambda: self.controller.ShowPage( "Common" ),
height=2 )
self.commonButton.grid( row=0, column=0, padx=10, sticky="ew" )
#button to go to the individual settings' page: settings per channel
self.individButton = SButton( self.settingsFrame.contentFrame, self.style,
text="Individual Settings",
command=lambda: self.controller.ShowPage( "Individual" ),
height=2 )
self.individButton.grid( row=0, column=1, padx=10, sticky="ew" )
#button to go to the terminal page
self.terminalButton = SButton( self.settingsFrame.contentFrame, self.style,
text="Terminal",
command=lambda: self.controller.ShowPage( "Terminal" ),
height=2 )
self.terminalButton.grid( row=0, column=2, padx=10, sticky="ew" )
#Set the same weight to each column
self.settingsFrame.AlignColumns( 3 )

enter image description here

问题

我希望每一帧的列具有相同的权重。如您所见,我为此目的使用了 AlignColumns 方法。而且它不像我想要的那样通用,因为我必须知道我在框架中使用的确切列数。我想知道是否有办法知道 Tkinter.Frame 中已经使用了多少列?

最佳答案

给定任何具有由 grid 管理的子项的 widget,您可以对该 widget 调用 grid_size 以返回一个二元组,其中包含列数,然后是数字行数。

关于python - 如何知道 Tkinter.Frame 中有多少行/列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58870450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com