鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

[作品展示] 记事本 2.0

[复制链接]
发表于 2019-9-19 16:48:51 | 显示全部楼层
LOOK rhf rhf
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-19 16:49:26 | 显示全部楼层
LOOK 看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-19 20:42:15 | 显示全部楼层
前来学习 学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-19 20:52:17 | 显示全部楼层
来吧,大爷
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-19 21:45:49 | 显示全部楼层
nice
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-3 00:07:16 | 显示全部楼层
学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-3 09:45:53 | 显示全部楼层
嗯嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-5 12:53:15 From FishC Mobile | 显示全部楼层
看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-5 13:11:23 | 显示全部楼层
看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-5 21:51:06 | 显示全部楼层
来看一眼
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-5 22:03:28 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 22:14:57 | 显示全部楼层
帮你改了一下:

  1. # -*- coding:utf-8 -*-
  2. from tkinter import *
  3. from tkinter import filedialog
  4. from tkinter import messagebox
  5. from os.path import isfile

  6. import pickle as pk
  7. import easygui

  8. # 新建文件
  9. def new(event=None):
  10.     global title
  11.     global saved
  12.     global filename
  13.    
  14.     title = "记事本 --- *New*"
  15.     saved = True
  16.     root.title(title)
  17.     filename = ""
  18.     text.delete("1.0", END)

  19. # 键盘按下时触发
  20. def enter(event):
  21.     global title
  22.     global saved

  23.     if event.char == "":
  24.         return False

  25.     text.edit_separator()
  26.    
  27.     if saved:
  28.         list1 = list(title)
  29.         list1.insert(8, "*")
  30.         list1.extend(["*"])
  31.         title = "".join(list1)
  32.         root.title(title)
  33.         saved = False

  34. # 打开文件
  35. def open_file(event=None):
  36.     global filename, title

  37.     filename = easygui.fileopenbox(title="打开文件", filetypes = ["*.txt"])
  38.    
  39.     if filename:
  40.         with open(filename, encoding="utf-8") as file:
  41.             text.delete("1.0", END)
  42.             text.insert("1.0", file.read())
  43.             
  44.         title = "记事本 --- " + filename
  45.         root.title(title)

  46. # 保存文件
  47. def save(event=None):
  48.     global title, filename, saved

  49.     # 以打开文件但没有保存
  50.     if title[8] == "*" and title[-1] == "*" and title != "记事本 --- *New*":
  51.         list1 = list(title)
  52.         
  53.         del list1[8]
  54.         del list1[-1]
  55.         
  56.         title = "".join(list1)
  57.         root.title(title)

  58.     # 未保存文件
  59.     if title == "记事本 --- New" or title == "记事本 --- *New*":
  60.         filename = easygui.filesavebox(title="保存文件", filetypes = ["*.txt"])
  61.         
  62.         if filename:
  63.             with open(filename, "w") as file:
  64.                 file.write(text.get("1.0", END))
  65.                
  66.             title = "记事本 --- " + filename

  67.     # 以打开文件但没有保存
  68.     else:
  69.         with open(filename, "w") as file:
  70.             file.write(text.get("1.0", END))
  71.             
  72.         title = "记事本 --- " + filename
  73.         
  74.     saved = True
  75.     root.title(title)

  76. # 撤销
  77. def undo():
  78.     global title
  79.     global saved
  80.    
  81.     text.edit_undo()
  82.    
  83.     if saved:
  84.         list1 = list(title)
  85.         
  86.         list1.insert(8, "*")
  87.         list1.extend(["*"])
  88.         
  89.         title = "".join(list1)
  90.         root.title(title)
  91.         
  92.         saved = False

  93. # 重做
  94. def redo():
  95.     global title
  96.     global saved

  97.     text.edit_redo()
  98.    
  99.     if saved:
  100.         list1 = list(title)
  101.         
  102.         list1.insert(8, "*")
  103.         list1.extend(["*"])
  104.         
  105.         title = "".join(list1)
  106.         root.title(title)
  107.         
  108.         saved = False

  109. # 退出
  110. def exit_program():
  111.     if not saved:
  112.         flag = messagebox.askquestion("提示", "文件未保存,是否保存文件?")
  113.         
  114.         if flag == "yes":
  115.             save()
  116.             root.quit()
  117.             
  118.     root.quit()

  119. # 确认更改字体名字
  120. def confirm():
  121.     font_list.append(fontname.get(ACTIVE))
  122.     mst.destroy()
  123.     fontsize_dialog()

  124. # 确认更改字体大小
  125. def confirm2():
  126.     font_list.append(w.get())
  127.     text.config(font=tuple(font_list))
  128.     pk.dump(font_list, file=open("font.pkl", "wb"))
  129.     m.destroy()

  130. # 调整字体
  131. def fontname_dialog():
  132.     global mst
  133.     global fontname
  134.    
  135.     font_list.clear()
  136.    
  137.     mst = Toplevel(root)
  138.     mst.title("调整字体")
  139.     mst.resizable(False, False)

  140.     frame = Frame(mst)
  141.     frame.pack(side=TOP)

  142.     fontname = Listbox(frame, width=30)
  143.     fontname.pack(side=LEFT)

  144.     confirmb = Button(mst, text="确定", width=25, command=confirm)
  145.     confirmb.pack(side=BOTTOM)

  146.     for each in ["楷体", "仿宋", "黑体"]:
  147.         fontname.insert(END, each)

  148.     mst.protocol("WM_DELETE_WINDOW", set_font)

  149. # 调整字体大小
  150. def fontsize_dialog():
  151.     global w, m

  152.     m = Toplevel(root)
  153.     m.title("调整字体大小")
  154.     m.resizable(False, False)

  155.     w = Scale(m, from_=2, to=72, length=400, orient=HORIZONTAL, tickinterval=10)
  156.     w.pack()
  157.    
  158.     confirmb = Button(m, text="确定", width=25, command=confirm2)
  159.     confirmb.pack(side=BOTTOM)

  160.     m.protocol("WM_DELETE_WINDOW", set_font)

  161. # 获取历史字体并设置
  162. def set_font():
  163.     fonttuple = tuple(pk.load(open("font.pkl", "rb")))
  164.    
  165.     text.config(font=fonttuple)


  166. title = "记事本 --- New"
  167. saved = True
  168. filename = ""
  169. mst = None
  170. fontname = None
  171. w = None
  172. m = None

  173. if not isfile("font.pkl"):
  174.     pk.dump(("仿宋", 15), open("font.pkl", "wb"))

  175. try:
  176.     font = pk.load(open("font.pkl", "rb"))
  177.    
  178. except EOFError:
  179.     pk.dump(("仿宋", 15), open("font.pkl", "wb"))
  180.     font = pk.load(open("font.pkl", "rb"))

  181. font_list = list(pk.load(open("font.pkl", "rb")))

  182. root = Tk()
  183. root.title(title)

  184. mb = Menu(root)

  185. # 文件菜单
  186. filemenu = Menu(mb, tearoff=False)
  187. filemenu.add_command(label="新建", command=new)
  188. filemenu.add_command(label="打开", command=open_file)
  189. filemenu.add_command(label="保存", command=save)
  190. filemenu.add_separator()
  191. filemenu.add_command(label="退出", command=exit_program)

  192. # 编辑菜单
  193. editmenu = Menu(mb, tearoff=False)
  194. editmenu.add_command(label="撤销", command=undo)
  195. editmenu.add_command(label="重做", command=redo)

  196. # 调整菜单
  197. adjustmenu = Menu(mb, tearoff=False)
  198. adjustmenu.add_command(label="调整字体", command=fontname_dialog)

  199. mb.add_cascade(label="文件", menu=filemenu)
  200. mb.add_cascade(label="编辑", menu=editmenu)
  201. mb.add_cascade(label="调整", menu=adjustmenu)

  202. sb = Scrollbar(root)
  203. sb.pack(side=RIGHT, fill=Y)

  204. text = Text(root, yscrollcommand=sb.set, font=tuple(font), undo=True, autoseparator=False, width=50, height=15)
  205. text.pack(side=LEFT, expand=True)

  206. sb.config(command=text.yview)
  207. text.bind("<KeyRelease>", enter)
  208. text.bind("<Control-s>", save)
  209. text.bind("<Control-n>", new)
  210. text.bind("<Control-o>", open_file)

  211. root.config(menu=mb)

  212. root.resizable(0, 0)
  213. root.protocol("WM_DELETE_WINDOW", exit_program)

  214. mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 22:22:09 | 显示全部楼层
text.edit_separator() 是什么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-20 10:42:32 | 显示全部楼层
一个账号 发表于 2020-2-19 22:22
text.edit_separator() 是什么?

插入分隔符
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 10:42:56 | 显示全部楼层

哦,想起来了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 12:50:43 | 显示全部楼层
学习运行一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 09:27:51 | 显示全部楼层
看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 18:29:08 | 显示全部楼层
oh,了解了解
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-13 17:28:27 | 显示全部楼层
学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-20 15:46:24 | 显示全部楼层
谢谢分享
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 01:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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