我的滚动条可以工作,但尺寸太小,我该如何添加一个水平滚动条?如果能帮上忙,我将不胜感激。
-
- app = Tk()
- app.title(" text editor")
-
- content = ttk.Frame(app, padding=(3,3,12,12))
- content.grid(column=0, row=0,sticky=(N, S, E, W))
-
- #creat label
- labeltext = StringVar()
- labeltext.set("enter url:")
- label1 = ttk.Label(content, textvariable=labeltext).grid(column=0, row=1, columnspan=1, rowspan=1, sticky=(N, W), padx=5)
-
- #create text box
- urlname = StringVar()# text being enterd in tht text box is stored in urlname
-
- urlname_entry = ttk.Entry(content, textvariable=urlname)
- urlname_entry.grid(column=1, row=1, columnspan=3,rowspan=5, sticky=(N) )
- #focus in the text box so user dont have to click on
- urlname_entry.focus()
- #create button
-
- button1 = ttk.Button(content,text="get source", command=geturl)
- button2 = ttk.Button(content,text="count white spaces", command=count_white_space)
- button1.grid(column=3,row=0, columnspan=1, rowspan=2, sticky=(N,W))
- button2.grid(column=4,row=0,columnspan=2, rowspan=2, sticky=(N,W))
-
-
- scroll = tkinter.Scrollbar(content,borderwidth=2)
- Text = tkinter.Text(content,wrap=CHAR, width=50, height=20)
-
- scroll.config(command=Text.yview)
- Text.config(yscrollcommand=scroll.set)
-
- Text.grid(row=2, column=1,columnspan=1, rowspan=3, sticky=(N))
- scroll.grid(row=2,column=3)
-
- app.columnconfigure(0, weight=1)
- app.rowconfigure(0, weight=1)
- content.columnconfigure(0, weight=3)
- content.columnconfigure(1, weight=3)
- content.columnconfigure(2, weight=3)
- content.columnconfigure(3, weight=1)
- content.columnconfigure(4, weight=1)
- content.rowconfigure(1, weight=1)
-
-
-
- #adds spacing between widgets
- for child in app.winfo_children(): child.grid_configure(padx=5, pady=5)
- for child in content.winfo_children(): child.grid_configure(padx=5, pady=5)
-
- app.bind('<Return>',geturl) #enter can also be hit
-
-
-
- app.mainloop()
-
-
-
-
# 回答1
需要配置Scrollbar.grid
Sticky='ns'
和
行跨度=3
。水平滚动条将以相同的方式添加,但进行了配置
Orient=Tkinter.HORIZONTAL
和W.GRID
Sticky="ew"
。配置文本小部件
Xscroll命令=hscllbar.set
和
Hscllbar["命令"]=self.textWidget.xview
。
我在中发布了一个带有水平和垂直滚动条的示例文本小部件
这条线
。
# 回答2
那么,我是否需要重写我的整个代码,以便它可以包括类和自身,我以前没有在Python中使用过类
# 回答3
我使用的是python3,你想看我的完整源代码吗?
# 回答4
您不必使用类。你试过我的一些建议了吗?
# 回答5
您是否认为最好切换到早期版本的python,作为
Http://infohost.nmt.edu/tcc/help/pubs/tkinter.pdf
在Python3中工作
# 回答6
是的,我添加了一个水平滚动条,但它不能与文本小工具一起工作,只有垂直滚动条在工作
# 回答8 - #!/usr/bin/env python
- from tkinter import *
- from tkinter import ttk
- import tkinter.messagebox
- import os
- import urllib.request
-
- sourcecode = ""
-
- def geturl(*args): #accept an argument for return
- path = urlname.get()
- if path == "":
- tkinter.messagebox.showinfo("error", "please enter a url")
- if "http://" not in path:
- http ="http://"
- path = http + path
- with urllib.request.urlopen(path) as url:
- sourcecode = url.read()
- global storecode
- storecode = sourcecode
- string2 = "source code copied from : " + path
- tkinter.messagebox.showinfo("copied", string2)
- Text.delete(1.0, END)#delete currently in text box
- Text.insert(tkinter.END,storecode)
- return
-
- #find white spaces in source code
- def count_white_space():
- path = urlname.get()
- if path == "":
- tkinter.messagebox.showinfo("error", "please enter a url")
-
- if "http://" not in path:
- http ="http://"
- path = http + path
- with urllib.request.urlopen(path) as url:
- sourcecode = url.readlines()
- global storecode
- storecode = sourcecode
- whitespace = 0
- for item in str(sourcecode):
- if item == ' ':
- whitespace +=1
- string1 = "There are " + str(whitespace) + " white spaces in: " + path
- tkinter.messagebox.showinfo("whitespace", string1)
-
-
- app = Tk()
- app.title(" text editor")
-
- content = ttk.Frame(app, padding=(3,3,12,12))
- content.grid(column=0, row=0,sticky=(N, S, E, W))
-
- #creat label
- labeltext = StringVar()
- labeltext.set("enter url:")
- label1 = ttk.Label(content, textvariable=labeltext).grid(column=0, row=1, columnspan=1, rowspan=1, sticky=(N, W), padx=5)
-
- #create text box
- urlname = StringVar()# text being enterd in tht text box is stored in urlname
-
- urlname_entry = ttk.Entry(content, textvariable=urlname)
- urlname_entry.grid(column=1, row=1, columnspan=3,rowspan=5, sticky=(N) )
- #focus in the text box so user dont have to click on
- urlname_entry.focus()
- #create button
-
- button1 = ttk.Button(content,text="get source", command=geturl)
- button2 = ttk.Button(content,text="count white spaces", command=count_white_space)
- button1.grid(column=3,row=0, columnspan=1, rowspan=2, sticky=(N,W))
- button2.grid(column=4,row=0,columnspan=2, rowspan=2, sticky=(N,W))
-
-
- scroll = tkinter.Scrollbar(content,borderwidth=2)
- Text = tkinter.Text(content,wrap=CHAR, width=30, height=20)
- scrollh = tkinter.Scrollbar(content,borderwidth=2, orient=HORIZONTAL)
-
-
- scrollh.config(command=Text.xview)
- Text.config(xscrollcommand=scrollh.set)
-
- scroll.config(command=Text.yview)
- Text.config(yscrollcommand=scroll.set)
-
- Text.grid(row=2, column=1,columnspan=1, rowspan=3, sticky=(N))
- scroll.grid(row=3,column=3)
- scrollh.grid(row=6, rowspan=3, column=1)
-
- app.columnconfigure(0, weight=1)
- app.rowconfigure(0, weight=1)
- content.columnconfigure(0, weight=3)
- content.columnconfigure(1, weight=3)
- content.columnconfigure(2, weight=3)
- content.columnconfigure(3, weight=1)
- content.columnconfigure(4, weight=1)
- content.rowconfigure(1, weight=1)
-
-
-
-
- #text = Text(app, width=80,height=40, wrap='none').grid(row=2, column=2)
-
-
-
-
-
-
- #adds spacing between widgets
- for child in app.winfo_children(): child.grid_configure(padx=5, pady=5)
- for child in content.winfo_children(): child.grid_configure(padx=5, pady=5)
-
- app.bind('<Return>',geturl) #enter can also be hit
-
-
-
- app.mainloop()
-
# 回答9
试试这个:
- Text.config(yscrollcommand=scroll.set, wrap=tkinter.NONE,)
-
- Text.grid(row=2, column=1,columnspan=1, rowspan=3, sticky=(N))
- scroll.grid(row=2,column=2, sticky='ns', rowspan=3)
- scrollh.grid(row=6, rowspan=1, column=1, sticky='ew')
# 回答10
我真的很感谢你的帮助,你能解释一下我哪里出错了吗,所以Scroll.GRID必须包括粘滞和行距
# 回答11
除非文本窗口需要展开,否则水平滚动条永远不会工作。只有在以下情况下它才需要扩张
WRAP=tkinter.NONE