Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在编辑器中打开文件时的尊崇顺序_Python_Python 3.x_Tkinter_Editor_Filedialog - Fatal编程技术网

Python 在编辑器中打开文件时的尊崇顺序

Python 在编辑器中打开文件时的尊崇顺序,python,python-3.x,tkinter,editor,filedialog,Python,Python 3.x,Tkinter,Editor,Filedialog,因此,我正在使用PythonTkinter制作一个简单文本编辑器。顶部有两个按钮:“保存”和“打开”。(它们显示打开/另存为对话框窗口)。“保存”按钮没有问题,但当我想在编辑器中打开文件时,它会以相反的顺序显示 这是我的密码: 从tkinter导入* 从tkinter导入文件对话框 window=Tk() 窗口几何(“1600x900”) 窗口标题(“文本编辑器”) def save(): editor\u content=editor.get(“1.0”,结束) saving=filedial

因此,我正在使用PythonTkinter制作一个简单文本编辑器。顶部有两个按钮:“保存”和“打开”。(它们显示打开/另存为对话框窗口)。“保存”按钮没有问题,但当我想在编辑器中打开文件时,它会以相反的顺序显示

这是我的密码:

从tkinter导入*
从tkinter导入文件对话框
window=Tk()
窗口几何(“1600x900”)
窗口标题(“文本编辑器”)
def save():
editor\u content=editor.get(“1.0”,结束)
saving=filedialog.asksaveasfile(mode=“w”,defaultextension=“.py”)
保存.写入(编辑器内容)
正在保存。关闭()
def open():
open_file=filedialog.askopenfile(initialdir=“/”,title=“open file”,filetypes=((“Python文件”,“.py”),(“文本文件”,“.txt”),(“所有文件”,“*”))
对于在“打开的文件”中打开的文件:
insert(0.0,f'{file_opened}')
编辑器=文本(bg=“#1f”,fg=“#b5b5”,宽度=105,高度=25,换行=WORD,padx=10,pady=10,font=“控制台,20”)
编辑器位置(x=0,y=40)
保存按钮(宽度=10,高度=2,bg=“#5e5e”,relief=“flat”,text=“save”,fg=“white”,activebackground=“#4e4e”,activeforeground=“white”,command=save)
保存位置(x=0,y=0)
打开按钮(宽度=10,高度=2,背景=“#5e5e”,relief=“flat”,text=“open”,fg=“white”,activebackground=“#4e4e”,activeforeground=“white”,command=open)
开放位置(x=80,y=0)
window.mainloop()

您的问题很容易解决,问题在于代码的以下部分

在打开的文件中打开的文件的
:
insert(0.0,f'{file_opened}')
正如您所看到的,您正在将文件的每一行插入到0.0索引(0 row.0 column)中,这意味着它将在前一行的顶部添加下一行,您所要做的就是在前一行之后添加该行。这可以通过将索引值更改为
“end”
而不是
0.0
来实现

for file_opened in open_file:
    editor.insert('end', f'{file_opened}')

就像下面提到的那样,如果您只想立即将整个文件插入
文本
小部件,那么您可以执行以下操作

editor.insert('end',open_file.read())

更好的做法是阅读整个文件并将其插入一条语句中,而不是逐行插入。@Saad,谢谢你……我知道了0.0“end”e.t.c的工作原理