仅当文本长度大于tex时创建滚动条

2024-05-15 02:24:19 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是一些简单的代码:

from tkinter import *
from tkinter import ttk

rootwin = Tk()

roomtext = Text(rootwin)
roomtext.pack(side = 'left', fill = "both", expand = True)

rtas = ttk.Scrollbar(roomtext, orient = "vertical", command = roomtext.yview)
rtas.pack(side = "right" , fill = "both")

roomtext.config(yscrollcommand = rtas.set)

rootwin.mainloop()

因此,默认的scrollbar会立即出现。 一旦输入的文本大于文本区域,怎么可能使scrollbar出现?在

所以当我运行代码时,首先,scrollbar不能显示。当输入足够的文本时,scrollbar显示(即roomtext中的文本比roomtext区域长)。在


Tags: 代码from文本import区域tkinterfillside
1条回答
网友
1楼 · 发布于 2024-05-15 02:24:19

也许这段代码就是你要找的(因为我更熟悉它,所以把包改成了网格。。。如果需要,您应该能够轻松恢复):

from tkinter import *
from tkinter import ttk

rootwin = Tk()

roomtext = Text(rootwin)
roomtext.grid(column=0, row=0)

def create_scrollbar():
    if roomtext.cget('height') < int(roomtext.index('end-1c').split('.')[0]):
        rtas = ttk.Scrollbar(rootwin, orient = "vertical", command = roomtext.yview)
        rtas.grid(column=1, row=0, sticky=N+S)
        roomtext.config(yscrollcommand = rtas.set)
    else:
        rootwin.after(100, create_scrollbar)

create_scrollbar()
rootwin.mainloop()

它检查是否需要每秒创建10次滚动条。 通过一些额外的更改,您甚至可以在不再需要时删除滚动条(文本太短):

^{pr2}$

相关问题 更多 >

    热门问题