鱼C论坛

 找回密码
 立即注册
查看: 900|回复: 1

求助tkinter中text的get方法

[复制链接]
发表于 2020-4-7 15:28:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在用tkinter做小甲鱼视频35课的第二题时,比较text中内容是否较原文件中内容发生改变,如果没有发生改变,点“OK”按钮应该就什么事都不会发生,但是我每次点都跳转到发生改变的那里去了。。。。
按理来说text的get方法中有\n,文件的read方法也有\n,两者应该是一样的啊,不知道哪里出了问题。
C:\Users\Administrator\Desktop\1.png
import tkinter as tk
import tkinter.filedialog
import tkinter.scrolledtext
#创建主窗体
window = tk.Tk()
window.title("显示文件内容")
window.geometry("500x400")
#label和button的建立,并加入frame中
frm = tk.Frame(window)
frm.pack(fill = "x")
var = tk.StringVar()
l = tk.Label(frm, textvariable = var )
l.pack(side = "left", padx = 5, pady = 5)
def surf():
    file_name = tk.filedialog.askopenfilename()
    var.set("文件【%s】的内容如下:" % file_name)
    #将文件导入entry
    global f    #不设置全局变量后面没法引用
    f = open(file_name, "r+")
    for eachline in f.readlines():
        st.insert("insert", eachline)
b1 = tk.Button(frm, text = "浏览文件", command = surf)
b1.pack(side = "right", pady = 5, padx = 5)
#增强功能
def change():
    #此处需要去除get方法中自带的换行符吗?
    new_string = st.get(0.0, "end")
    if new_string != f.read():  
        #设置子窗口
        window_child = tk.Toplevel(window)
        window_child.geometry("400x150")
        window_child.title("警告")
        l_child = tk.Label(window_child, text = "检测到文件内容发生改变,请选择以下操作:")
        l_child.pack(side = "top", padx =20, pady = 20)
        #安装三个并列的button
        def cover_save():
            f.seek(0)
            f.write(st.get(0.0, "end"))
            f.close()
            window_child.destroy()
        b_child1 = tk.Button(window_child, text = "覆盖保存", command = cover_save)
        b_child1.place(x = 50, y = 75)
        def not_save():
            f.close()
            window_child.destroy()
        b_child2 = tk.Button(window_child, text = "放弃保存", command = not_save)
        b_child2.place(x = 150, y = 75)
        def elsewhere_save():
            f_elsewhere_name = tk.filedialog.asksaveasfilename()
            f_elsewhere = open(f_elsewhere_name, "w")
            f_elsewhere.write(st.get(0.0, "end"))
            f_elsewhere.close()
            f.close()
        b_child3 = tk.Button(window_child, text = "另存为", command = elsewhere_save)
        b_child3.place(x = 250, y = 75)
b2 = tk.Button(frm, command = change, text = "OK")
b2.pack(side = "right", pady = 5, padx = 5)
#scrolledtext
st = tk.scrolledtext.ScrolledText(window, width = 45)
st.pack(pady = 10)
window.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-7 15:29:42 | 显示全部楼层
不知道怎么发图片。。。小甲鱼的题目没传上来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 02:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表