Python 水平滚动条没有';我不在特金特工作
我想创建一个基于tkinter的GUI程序。其中一个小部件是Python 水平滚动条没有';我不在特金特工作,python,text,tkinter,scrollbar,Python,Text,Tkinter,Scrollbar,我想创建一个基于tkinter的GUI程序。其中一个小部件是Text。我想在其中添加一个水平滚动条,但它不起作用 我在哪里犯了错误 from Tkinter import * import tkFont class DpWin(object): def run(self): root=Tk() root.geometry('768x612') title='dp' root.title(title)
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()
我已根据修改了您的代码。有两个主要区别
.grid
的优点是,您实际上可以获得正确宽度/高度的滚动条(这是使用包无法实现的)
关于让x和y滚动条在pack框架内工作,有一条评论。下面是一个简单的例子:
import tkinter as tk
from tkinter import X, Y, BOTTOM, RIGHT, LEFT, Y, HORIZONTAL
class TextExample(tk.Frame):
def __init__(self, master=None):
super().__init__()
sy = tk.Scrollbar(self)
sx = tk.Scrollbar(self, orient=HORIZONTAL)
editor = tk.Text(self, height=500, width=300, wrap='none')
sx.pack(side=BOTTOM, fill=X)
sy.pack(side=RIGHT, fill=Y)
editor.pack(side=LEFT, fill=Y)
sy.config(command=editor.yview)
sx.config(command=editor.xview)
self.pack()
def main():
root = tk.Tk()
root.geometry("800x500+0+0")
app = TextExample(master=root)
root.mainloop()
if __name__ == '__main__':
main()
它以什么方式不起作用?(这个答案应该有帮助:)谢谢你的帮助和建议。它帮助了我!我在创建文本时丢失了“wrap=NONE”。我将学习如何使用网格几何体管理器。谢谢!当然总是乐于助人。祝你好运(我更喜欢
grid
而不是pack
)。有些人认为打包更简单,但我一直认为grid
更直观…@mgilson我也面临同样的问题。使用包管理器时,无论我做了什么,xscrollbar都无法工作。即使我注释了YSCROLLLBAR代码。上面提供的解决方案适用于grid manager。但是,如果代码很长,并且packmanager已经在使用,那么gridmanager就没有任何帮助。使用grid manager和pack mangaer会导致代码进入无限协商。我希望您使用packmanager发布解决方案。但我还是被这个问题困扰着。提前谢谢!
import tkinter as tk
from tkinter import X, Y, BOTTOM, RIGHT, LEFT, Y, HORIZONTAL
class TextExample(tk.Frame):
def __init__(self, master=None):
super().__init__()
sy = tk.Scrollbar(self)
sx = tk.Scrollbar(self, orient=HORIZONTAL)
editor = tk.Text(self, height=500, width=300, wrap='none')
sx.pack(side=BOTTOM, fill=X)
sy.pack(side=RIGHT, fill=Y)
editor.pack(side=LEFT, fill=Y)
sy.config(command=editor.yview)
sx.config(command=editor.xview)
self.pack()
def main():
root = tk.Tk()
root.geometry("800x500+0+0")
app = TextExample(master=root)
root.mainloop()
if __name__ == '__main__':
main()