我的滚动条有什么问题?

我的滚动条可以工作,但尺寸太小,我该如何添加一个水平滚动条?如果能帮上忙,我将不胜感激。

选择 | 换行 | 行号
  1.  
  2. app = Tk()
  3. app.title(" text editor")
  4.  
  5. content = ttk.Frame(app, padding=(3,3,12,12))
  6. content.grid(column=0, row=0,sticky=(N, S, E, W))
  7.  
  8. #creat label
  9. labeltext = StringVar()
  10. labeltext.set("enter url:")
  11. label1 = ttk.Label(content, textvariable=labeltext).grid(column=0, row=1, columnspan=1, rowspan=1, sticky=(N, W), padx=5)
  12.  
  13. #create text box
  14. urlname = StringVar()# text being enterd in tht text box is stored in urlname
  15.  
  16. urlname_entry = ttk.Entry(content, textvariable=urlname)
  17. urlname_entry.grid(column=1, row=1, columnspan=3,rowspan=5, sticky=(N) )
  18. #focus in the text box so user dont have to click on
  19. urlname_entry.focus()
  20. #create button
  21.  
  22. button1 = ttk.Button(content,text="get source", command=geturl)
  23. button2 = ttk.Button(content,text="count white spaces", command=count_white_space)
  24. button1.grid(column=3,row=0, columnspan=1, rowspan=2, sticky=(N,W))
  25. button2.grid(column=4,row=0,columnspan=2, rowspan=2, sticky=(N,W))
  26.  
  27.  
  28. scroll = tkinter.Scrollbar(content,borderwidth=2)
  29. Text = tkinter.Text(content,wrap=CHAR, width=50, height=20)
  30.  
  31. scroll.config(command=Text.yview)
  32. Text.config(yscrollcommand=scroll.set)
  33.  
  34. Text.grid(row=2, column=1,columnspan=1, rowspan=3, sticky=(N))
  35. scroll.grid(row=2,column=3)
  36.  
  37. app.columnconfigure(0, weight=1)
  38. app.rowconfigure(0, weight=1)
  39. content.columnconfigure(0, weight=3)
  40. content.columnconfigure(1, weight=3)
  41. content.columnconfigure(2, weight=3)
  42. content.columnconfigure(3, weight=1)
  43. content.columnconfigure(4, weight=1)
  44. content.rowconfigure(1, weight=1)
  45.  
  46.  
  47.  
  48. #adds spacing between widgets
  49. for child in app.winfo_children(): child.grid_configure(padx=5, pady=5)
  50. for child in content.winfo_children(): child.grid_configure(padx=5, pady=5)
  51.  
  52. app.bind('<Return>',geturl) #enter can also be hit
  53.  
  54.  
  55.  
  56. app.mainloop()
  57.  
  58.  
  59.  
  60.  
# 回答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


是的,我添加了一个水平滚动条,但它不能与文本小工具一起工作,只有垂直滚动条在工作
# 回答7


张贴你的代码,我会看一看。
# 回答8

选择 | 换行 | 行号
  1. #!/usr/bin/env python
  2. from tkinter import *
  3. from tkinter import ttk
  4. import tkinter.messagebox
  5. import os
  6. import urllib.request
  7.  
  8. sourcecode = ""
  9.  
  10. def geturl(*args): #accept an argument for return
  11.     path = urlname.get()
  12.     if path == "":
  13.            tkinter.messagebox.showinfo("error", "please enter a url")
  14.     if "http://" not in path:
  15.         http ="http://"
  16.         path = http + path
  17.     with urllib.request.urlopen(path) as url:
  18.         sourcecode = url.read()
  19.         global storecode
  20.         storecode = sourcecode
  21.         string2 = "source code copied from : " + path
  22.         tkinter.messagebox.showinfo("copied", string2)
  23.         Text.delete(1.0, END)#delete currently in text box
  24.         Text.insert(tkinter.END,storecode)
  25.         return
  26.  
  27.             #find white spaces in source code
  28. def count_white_space():
  29.     path = urlname.get()
  30.     if path == "":
  31.            tkinter.messagebox.showinfo("error", "please enter a url")
  32.  
  33.     if "http://" not in path:
  34.         http ="http://"
  35.         path = http + path
  36.         with urllib.request.urlopen(path) as url:
  37.             sourcecode = url.readlines()
  38.             global storecode
  39.             storecode = sourcecode
  40.             whitespace = 0
  41.             for item in str(sourcecode):
  42.                 if item == ' ':
  43.                     whitespace +=1
  44.             string1 = "There are " + str(whitespace) + " white spaces in: " + path
  45.             tkinter.messagebox.showinfo("whitespace", string1)
  46.  
  47.  
  48. app = Tk()
  49. app.title(" text editor")
  50.  
  51. content = ttk.Frame(app, padding=(3,3,12,12))
  52. content.grid(column=0, row=0,sticky=(N, S, E, W))
  53.  
  54. #creat label
  55. labeltext = StringVar()
  56. labeltext.set("enter url:")
  57. label1 = ttk.Label(content, textvariable=labeltext).grid(column=0, row=1, columnspan=1, rowspan=1, sticky=(N, W), padx=5)
  58.  
  59. #create text box
  60. urlname = StringVar()# text being enterd in tht text box is stored in urlname
  61.  
  62. urlname_entry = ttk.Entry(content, textvariable=urlname)
  63. urlname_entry.grid(column=1, row=1, columnspan=3,rowspan=5, sticky=(N) )
  64. #focus in the text box so user dont have to click on
  65. urlname_entry.focus()
  66. #create button
  67.  
  68. button1 = ttk.Button(content,text="get source", command=geturl)
  69. button2 = ttk.Button(content,text="count white spaces", command=count_white_space)
  70. button1.grid(column=3,row=0, columnspan=1, rowspan=2, sticky=(N,W))
  71. button2.grid(column=4,row=0,columnspan=2, rowspan=2, sticky=(N,W))
  72.  
  73.  
  74. scroll = tkinter.Scrollbar(content,borderwidth=2)
  75. Text = tkinter.Text(content,wrap=CHAR, width=30, height=20)
  76. scrollh = tkinter.Scrollbar(content,borderwidth=2, orient=HORIZONTAL)
  77.  
  78.  
  79. scrollh.config(command=Text.xview)
  80. Text.config(xscrollcommand=scrollh.set)
  81.  
  82. scroll.config(command=Text.yview)
  83. Text.config(yscrollcommand=scroll.set)
  84.  
  85. Text.grid(row=2, column=1,columnspan=1, rowspan=3, sticky=(N))
  86. scroll.grid(row=3,column=3)
  87. scrollh.grid(row=6, rowspan=3, column=1)
  88.  
  89. app.columnconfigure(0, weight=1)
  90. app.rowconfigure(0, weight=1)
  91. content.columnconfigure(0, weight=3)
  92. content.columnconfigure(1, weight=3)
  93. content.columnconfigure(2, weight=3)
  94. content.columnconfigure(3, weight=1)
  95. content.columnconfigure(4, weight=1)
  96. content.rowconfigure(1, weight=1)
  97.  
  98.  
  99.  
  100.  
  101. #text = Text(app, width=80,height=40, wrap='none').grid(row=2, column=2)
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108. #adds spacing between widgets
  109. for child in app.winfo_children(): child.grid_configure(padx=5, pady=5)
  110. for child in content.winfo_children(): child.grid_configure(padx=5, pady=5)
  111.  
  112. app.bind('<Return>',geturl) #enter can also be hit
  113.  
  114.  
  115.  
  116. app.mainloop()
  117.  
# 回答9


试试这个:

选择 | 换行 | 行号
  1. Text.config(yscrollcommand=scroll.set, wrap=tkinter.NONE,)
  2.  
  3. Text.grid(row=2, column=1,columnspan=1, rowspan=3, sticky=(N))
  4. scroll.grid(row=2,column=2, sticky='ns', rowspan=3)
  5. scrollh.grid(row=6, rowspan=1, column=1, sticky='ew')
# 回答10


我真的很感谢你的帮助,你能解释一下我哪里出错了吗,所以Scroll.GRID必须包括粘滞和行距
# 回答11


除非文本窗口需要展开,否则水平滚动条永远不会工作。只有在以下情况下它才需要扩张
WRAP=tkinter.NONE

标签: python

添加新评论