如何保持已阅读文本的相同格式

嗨,我让我用urllib.quest.urlopen打开一个url,然后用url.read存储源代码。读取一个变量,然后将源代码粘贴到tkinter文本小部件中,但如何保持相同的格式??

选择 | 换行 | 行号
  1.  
  2. with urllib.request.urlopen(path) as url:
  3.         sourcecode = url.read()
  4.         global storecode
  5.         storecode = sourcecode
  6.         tkinter.messagebox.showinfo("sourcode copied:", path)
  7.         Text.insert(tkinter.END,storecode) 
  8. #i want the source  code to be kept in he same format
  9.  
# 回答1


一种方法是使用READLINS(),如果换行符显示不正确,则单独插入每一行。但我们不知道你得到的显示器出了什么问题,我们也不知道小工具"文本"是什么类型。我建议您看看PMW扩展,特别是
滚动文本
小工具。
# 回答2


我正在使用标准的tkinter.Text小部件
我使用READLINS()对其进行了排序,但我猜文本小部件不够宽,我需要添加一个水平滚动条
滚动文本小部件更好吗?
# 回答3


Scrollbar并没有那么难。您只需将它们附加到小部件的xview或yview(文本小部件的示例位于
Http://effbot.org/zone/tkinter-scrollbar-patterns.htm
),但为什么要重新发明轮子呢?
# 回答4


谢谢我打开了滚动条,但滚动条的大小真的很小,它和tkinter文本小工具的大小不一样,我试着把滚动条放在一个单独的框架里,但不行,你怎么设置滚动条的长度?你可以选择吗?
# 回答5


HTML是为数据显示而设计的,重点放在它的外观上。它不会在Tkinter文本小部件中显示相同的内容。下面是一个带有滚动条的Tkinter文本小部件的示例,该滚动条显示文本文件的内容:

选择 | 换行 | 行号
  1. import Tkinter
  2. """
  3. Edit a file and save the text.
  4. """
  5.  
  6. textFont1 = ("Courier New", 16, "normal")
  7.  
  8. class ScrollbarX(Tkinter.Scrollbar):
  9.     def set(self, low, high):
  10.         if float(low) <= 0.0 and float(high) >= 1.0:
  11.             self.grid_remove()
  12.         else:
  13.             self.grid()
  14.         Tkinter.Scrollbar.set(self, low, high)
  15.  
  16. class App(Tkinter.Tk):
  17.     def __init__(self, fn, fnout):
  18.         Tkinter.Tk.__init__(self)
  19.         self.title("Text Widget")
  20.         self.fin = open(fn, 'r')
  21.         self.fnout = fnout
  22.         self.mainFrame = Tkinter.Frame(self)
  23.         self.mainFrame.grid()
  24.         self.exit = Tkinter.Button(self.mainFrame,
  25.                                    text="Save and Exit",
  26.                                    command=self.finish)
  27.         self.exit.grid(row=0, column=0, sticky="ns")
  28.  
  29.         vscrollbar = ScrollbarX(self.mainFrame)
  30.         vscrollbar.grid(row=1, column=1, sticky="ns")
  31.         hscrollbar = ScrollbarX(self.mainFrame, orient=Tkinter.HORIZONTAL)
  32.         hscrollbar.grid(row=2, column=0, sticky="ew")
  33.  
  34.         self.textWidget = Tkinter.Text(self.mainFrame,
  35.                                        yscrollcommand=vscrollbar.set,
  36.                                        xscrollcommand=hscrollbar.set,
  37.                                        wrap=Tkinter.NONE,
  38.                                        height=24,
  39.                                        width=60,
  40.                                        font=textFont1)
  41.         self.textWidget.insert("1.0", self.fin.read())
  42.         self.textWidget.grid(row=1, column=0, sticky="nsew")
  43.  
  44.         hscrollbar["command"] = self.textWidget.xview
  45.         vscrollbar["command"] = self.textWidget.yview
  46.  
  47.     def finish(self):
  48.         fout = open(self.fnout, 'w')
  49.         fout.write(self.textWidget.get("1.0", "end"))
  50.         fout.close()
  51.         self.fin.close()
  52.         self.quit()
  53.  
  54. if __name__ == "__main__":
  55.     fn = "edit.txt"
  56.     fnout = "editresult.txt"
  57.     app = App(fn, fnout)
  58.     app.mainloop()
  59.     app.destroy()

标签: python

添加新评论