标签框变得太宽

问题描述 投票:0回答:1

我使用Python 3.11.0a5作为我的平台。如何让 Tkinter

LabelFrame
在第 1 列中绘制实际尺寸?不幸的是,我无法理解如何解决
columnspan
rowspan
等问题。

这是一张图片:

enter image description here

不幸的是,我不希望 LabelFrame 画得更宽。这是另一张照片。 different. But is it better or worse?

这是我的代码:

from tkinter import *
from tkinter import ttk

# Create an instance of tkinter frame
win= Tk()

# Define the geometry of the window
win.geometry("400x160")

lblChannelName = ttk.Label(win, text='Channel Name')
lblChannelName.grid(row=0, column=0, sticky='W')

entry_channelname = ttk.Entry(win, width=45)
entry_channelname.grid(row=0, column=1, sticky='W')
 
lblChannelTopic = ttk.Label(win, text = 'Channel Topic')
lblChannelTopic.grid(row=1, column=0, pady=2, sticky='W')

entry_channelTopic = ttk.Entry(win, width=45)
entry_channelTopic.grid(row=1, column=1, pady=2, sticky='W')

# Initialize a LabelFrame Widget
labelframe = LabelFrame(win, width=400, height=200, bd=5)
labelframe.grid(row=3, padx=2, pady=5, columnspan=18, sticky='WE')

# Checkbutton Invite
invite = IntVar()
ck1 = ttk.Checkbutton(labelframe, text ='Invite Only[+i]', variable=invite)
ck1.grid(row=0, column=0, padx=0, sticky='W')

# Checkbutton Moderated 
moderated = IntVar()
ck2 = ttk.Checkbutton(labelframe, text ='Moderated[+m]', variable=moderated)
ck2.grid(row=0, padx=170, columnspan=3, sticky='W')

# Checkbutton Message
message = IntVar()
ck3 = ttk.Checkbutton(labelframe, text ='No Outside Message[+n]', variable=message)
ck3.grid(row=1, column=0, sticky='W')

# Checkbutton Private
private = IntVar()
ck4 = ttk.Checkbutton(labelframe, text ='Private[+p]', variable=private)
ck4.grid(row=1, padx=170, columnspan=3, sticky='W')
 
# Checkbutton Only ops
topics = IntVar()
ck5 = ttk.Checkbutton(labelframe, text ='Only ops set topics[+t]', variable=topics)
ck5.grid(row=2, column=0, sticky='W')

# Checkbutton Secret Channel
secret = IntVar()
ck6 = ttk.Checkbutton(labelframe, text ='Secret Channel[+s]', variable=secret)
ck6.grid(row=2, padx=170, columnspan=3, sticky='W')

# Checkbutton Keyed
keyed = IntVar()
ck7 = ttk.Checkbutton(labelframe, text ='Channel is keyed[+k]', variable=keyed)
ck7.grid(row=3, column=0, sticky='W')

lblkeyed = ttk.Label(labelframe, text='Key:')
lblkeyed.grid(row=3, padx=135, columnspan=2, sticky='W')

entry_keyed = ttk.Entry(labelframe, width=20)
entry_keyed.grid(row=3,  padx=170, columnspan=3, sticky='W')
 
# Checkbutton limit
limit = IntVar()
ck8 = ttk.Checkbutton(labelframe, text ='Limit channel members[+l]', variable=limit)
ck8.grid(row=4, column=0, sticky='W')

win.mainloop()

如何修复图1中的标签框?

python python-3.x tkinter
1个回答
2
投票

在代码中,当您网格

labelframe
时,将
columnspan
更改为
2
。第 24 行将如下所示:

labelframe.grid(row=3, padx=2, pady=5, columnspan=2, sticky='WE')

这会将您的

LabelFrame
设置为正确的宽度。

如果您希望条目与

LabelFrame
对齐,您可以将它们设为
sticky='WE'
。第 14 行和第 20 行看起来像这样:

# Line 14
entry_channelname.grid(row=0, column=1, sticky='WE')
# Line 20
entry_channelTopic.grid(row=1, column=1, pady=2, sticky='WE')
© www.soinside.com 2019 - 2024. All rights reserved.