gpt4 book ai didi

python - 水平滚动条在 Tkinter 中不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:29 25 4
gpt4 key购买 nike

我想创建一个基于 tkinter 的 GUI 程序。其中一个小部件是 Text。我想在其中添加一个水平滚动条,但是没有用。

我哪里做错了?

from Tkinter import *
import tkFont


class DpWin(object):

def run(self):
root=Tk()
root.geometry('768x612')
title='dp'
root.title(title)

xscrollbar = Scrollbar(root, orient=HORIZONTAL)
xscrollbar.pack(side=BOTTOM, fill=X)

yscrollbar = Scrollbar(root)
yscrollbar.pack(side=RIGHT, fill=Y)

text = Text(root,xscrollcommand=xscrollbar.set,yscrollcommand=yscrollbar.set)
text.pack()

xscrollbar.config(command=text.xview)
yscrollbar.config(command=text.yview)
text.insert(END,'a'*999)
mainloop()

def start(self):
self.b_start.config(state=DISABLED)
self.b_stop.config(state=ACTIVE)

def stop(self):
self.b_stop.config(state=DISABLED)
self.b_start.config(state=ACTIVE)


if __name__=='__main__':
win=DpWin()
win.run()

最佳答案

我已经根据 here 修改了您的代码.有两个主要区别。

  1. 我这样做是为了让文本框不换行。如果您换行文本,则水平滚动条无法滚动到任何地方。

  2. 我在框架上使用网格几何管理器将滚动条和文本小部件放在一起。使用 .grid 的优点是您实际上获得了宽度/高度正确的滚动条(这是您无法使用 pack 实现的)。

    <

...

from Tkinter import *
import tkFont

class DpWin(object):
def run(self):
root=Tk()
root.geometry('768x612')
title='dp'
root.title(title)

f = Frame(root)
f.pack()

xscrollbar = Scrollbar(f, orient=HORIZONTAL)
xscrollbar.grid(row=1, column=0, sticky=N+S+E+W)

yscrollbar = Scrollbar(f)
yscrollbar.grid(row=0, column=1, sticky=N+S+E+W)

text = Text(f, wrap=NONE,
xscrollcommand=xscrollbar.set,
yscrollcommand=yscrollbar.set)
text.grid(row=0, column=0)

xscrollbar.config(command=text.xview)
yscrollbar.config(command=text.yview)
text.insert(END, 'a'*999)
mainloop()

def start(self):
self.b_start.config(state=DISABLED)
self.b_stop.config(state=ACTIVE)

def stop(self):
self.b_stop.config(state=DISABLED)
self.b_start.config(state=ACTIVE)

if __name__=='__main__':
win=DpWin()
win.run()

关于python - 水平滚动条在 Tkinter 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12388604/

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