tkinter:简单的可滚动文本

2024-05-11 19:31:07 发布

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

问题

我正在尝试制作一个“ttk标签”,a)20像素高,300像素宽,b)可滚动(在本例中是水平的),c)使用合理的最简单代码(除了文本和滚动条都在一个框架内*)。我发现stackoverflow有助于描述我需要经历的过程(将标签放在一个框架中,将框架放在画布中,将滚动条放在画布旁边或下面,并以某种方式将它们“绑定”在一起),但尽管看到了一些文档和stackoverflow问题,我不明白为什么我的代码不能正常工作。请有人a)更新代码,使其满足上述条件,b)让我知道,如果我做了什么不必要的?谢谢

*框架将在我的一个项目中使用,文本与

当前代码

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

myframe_outer = ttk.Frame(root)
mycanvas = tk.Canvas(myframe_outer, height=20, width=300)
myframe_inner = ttk.Frame(mycanvas)
myscroll = ttk.Scrollbar(myframe_outer, orient='horizontal', command=mycanvas.xview)
mycanvas.configure(xscrollcommand=myscroll.set)

myframe_outer.grid()
mycanvas.grid(row=1, sticky='nesw')
myscroll.grid(row=2, sticky='ew')
mycanvas.create_window(0, 0, window=myframe_inner, anchor='nw')
ttk.Label(myframe_inner, text='test ' * 30).grid(sticky='w')

root.mainloop()

编辑:

当前结果

enter image description here


Tags: 代码文本框架root像素标签tkgrid
1条回答
网友
1楼 · 发布于 2024-05-11 19:31:07

回答

使用只读的“entry”小部件-它看起来和标签一样,不需要放在画布中。

代码

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

mytext = tk.StringVar(value='test ' * 30)

myframe = ttk.Frame(root)
myentry = ttk.Entry(myframe, textvariable=mytext, state='readonly')
myscroll = ttk.Scrollbar(myframe, orient='horizontal', command=myentry.xview)
myentry.config(xscrollcommand=myscroll.set)

myframe.grid()
myentry.grid(row=1, sticky='ew')
myscroll.grid(row=2, sticky='ew')

root.mainloop()

结果

enter image description here

相关问题 更多 >