嗨,我让我用urllib.quest.urlopen打开一个url,然后用url.read存储源代码。读取一个变量,然后将源代码粘贴到tkinter文本小部件中,但如何保持相同的格式??
-
- with urllib.request.urlopen(path) as url:
- sourcecode = url.read()
- global storecode
- storecode = sourcecode
- tkinter.messagebox.showinfo("sourcode copied:", path)
- Text.insert(tkinter.END,storecode)
- #i want the source code to be kept in he same format
-
# 回答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文本小部件的示例,该滚动条显示文本文件的内容:
- import Tkinter
- """
- Edit a file and save the text.
- """
-
- textFont1 = ("Courier New", 16, "normal")
-
- class ScrollbarX(Tkinter.Scrollbar):
- def set(self, low, high):
- if float(low) <= 0.0 and float(high) >= 1.0:
- self.grid_remove()
- else:
- self.grid()
- Tkinter.Scrollbar.set(self, low, high)
-
- class App(Tkinter.Tk):
- def __init__(self, fn, fnout):
- Tkinter.Tk.__init__(self)
- self.title("Text Widget")
- self.fin = open(fn, 'r')
- self.fnout = fnout
- self.mainFrame = Tkinter.Frame(self)
- self.mainFrame.grid()
- self.exit = Tkinter.Button(self.mainFrame,
- text="Save and Exit",
- command=self.finish)
- self.exit.grid(row=0, column=0, sticky="ns")
-
- vscrollbar = ScrollbarX(self.mainFrame)
- vscrollbar.grid(row=1, column=1, sticky="ns")
- hscrollbar = ScrollbarX(self.mainFrame, orient=Tkinter.HORIZONTAL)
- hscrollbar.grid(row=2, column=0, sticky="ew")
-
- self.textWidget = Tkinter.Text(self.mainFrame,
- yscrollcommand=vscrollbar.set,
- xscrollcommand=hscrollbar.set,
- wrap=Tkinter.NONE,
- height=24,
- width=60,
- font=textFont1)
- self.textWidget.insert("1.0", self.fin.read())
- self.textWidget.grid(row=1, column=0, sticky="nsew")
-
- hscrollbar["command"] = self.textWidget.xview
- vscrollbar["command"] = self.textWidget.yview
-
- def finish(self):
- fout = open(self.fnout, 'w')
- fout.write(self.textWidget.get("1.0", "end"))
- fout.close()
- self.fin.close()
- self.quit()
-
- if __name__ == "__main__":
- fn = "edit.txt"
- fnout = "editresult.txt"
- app = App(fn, fnout)
- app.mainloop()
- app.destroy()