python滚动条变小_tkinter:滚动条自动隐藏而不调整窗口大小

此示例代码展示了如何在Tkinter应用程序中创建一个带有滚动条的列表框,滚动条可以自动隐藏和显示。当列表项超过8个时,滚动条出现;否则,滚动条隐藏。在添加或删除列表项时,滚动条的显示状态会随之变化,但这导致了窗口大小调整,影响到其他元素的位置。问题在于如何在不影响布局的情况下动态添加和移除滚动条。
摘要由CSDN通过智能技术生成

使用下面我编写的示例代码,我对一些行为有问题。

我想根据需要添加/删除滚动条。但当我这样做时,它会随着窗口大小的调整而改变窗口中的所有其他元素。这只是一个示例来演示这个问题,当添加和删除滚动条时,您将看到窗口的大小调整。在实际的应用程序中,窗口上有更多的小部件。在

我是不是想用正确的方式来解决这个问题呢?我还计划在另一个单独的框架中使用第二个带有滚动条的小部件。在from tkinter import *

from tkinter import ttk

class TopFrame(ttk.Frame):

def __init__(self, parent, col=0, row=0):

ttk.Frame.__init__(self, parent)

self.innerframe = ttk.Frame(parent)

self.list_scroll = ttk.Scrollbar(self.innerframe)

self.list_scroll.grid(column=1, row=0, sticky=NS)

self.list_scroll.grid_remove()

self.list = Listbox(self.innerframe, width=64, height=8,

yscrollcommand=self.list_scroll.set)

self.list_scroll.config(command=self.list.yview)

self.list.grid(column=0, row=0, sticky=NSEW)

self.innerframe.grid(column=col, row=row)

self.addbtn = ttk.Button(parent, text='add item',

command=self.additem)

self.addbtn.grid(column=col, row=row+1, padx=10, pady=2)

self.delbtn = ttk.Button(parent, text='del item',

command=self.delitem)

self.delbtn.grid(column=col, row=row+2, padx=10, pady=2)

self.grid_rowconfigure(0, weight=1)

self.grid_columnconfigure(0, weight=1)

def additem(self):

count = str(len(self.list.get(0, END)))

self.list.insert(END, 'demo' + count)

if len(self.list.get(0, END)) > 8:

self.list_scroll.grid()

def delitem(self):

self.list.delete(END)

if len(self.list.get(0, END)) <= 8:

self.list_scroll.grid_remove()

class MasterFrame(Tk):

def __init__(self):

Tk.__init__(self)

topframe = TopFrame(self)

if __name__ == '__main__':

MasterFrame().mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值