python2.7实现简单日记本,兼容windows和linux
程序员文章站
2022-06-17 09:41:20
...
上代码:
#coding:utf-8
from Tkinter import * ;
import os;
#查看日记
def showDiary(event):
#print listBox.curselection();
items = map(int, listBox.curselection()); # 获取当前被选中的项
title = listBox.get(listBox.curselection());
showTitle = title[:-4]; # 从倒数第四个字符往前截取取得日记标题
textVar.set(showTitle);
fileObj = open(title,"r+");
content = fileObj.read();
text.delete("0.0", "end"); #清空
if os.name == 'nt':
content = content.decode("gbk");
text.insert("end",content); #插入最后
label.config(text = u"查看日记->"+showTitle);
listBox.pack_forget();
entry.pack();
text.pack();
saveBtn.pack(side=LEFT,anchor='sw');
#日记列表
def read():
listBox.delete(0,END);# 清空listBox 从第一个到END(最后一个)删除了
dir = os.getcwd(); # 获取当前目录
list = os.listdir(dir);
showText= "查看日记";
if len(list) == 0:
showText += "(日记本是空的)";
for item in list:
if os.name == "nt":
listBox.insert(0,item.decode('gbk')); #插入到第一个之前
else:
listBox.insert(0,item); #插入到第一个之前
label.config(text = showText);
listBox.bind("<Double-Button-1>",showDiary); # 绑定双击事件 查看日记
listBox.pack(); # 显示日记列表
entry.pack_forget(); # 隐藏entry
text.pack_forget(); # 隐藏text
saveBtn.pack_forget();
#保存日记
def save():
title = textVar.get() + ".txt"; #获取标题
content = text.get("0.0","end"); #获取内容
if(title != ".txt"):
fileObj= open(title,"wb");
if os.name == "nt":
#print u"Windows系统";
fileObj.write(content.encode("gbk"));
else:
#print u"Linux系统";
fileObj.write(content);
fileObj.close();
label.config(text = "以保存");
else:
label.config(text = "请输入标题");
#写日记
def write():
textVar.set(""); # 初始化输入框值
text.delete("0.0","end"); #清空text
label.config(text = "写日记");
listBox.pack_forget(); # 隐藏listBox
entry.pack(); # 显示entry
text.pack(); # 显示text
saveBtn.pack(side=LEFT,anchor='sw');
#创建日记文件夹
def initDiary():
dir = os.getcwd(); # 得到当前工作的目录
list = os.listdir(dir); # 取得当前目录下所有的文件和文件夹
haveDiary = False;
for item in list:
if item == "diary":
haveDiary = True;
if haveDiary == False:
os.mkdir("diary"); # 创建目录
os.chdir("./diary"); # 切换工作空间
initDiary();
root = Tk();
root.geometry("500x400");
root.title("程序猿日记本");
saveBtn = Button(root,text="保存",command = save); # command 表示点击的时候执行save
#saveBtn.pack(side=LEFT,anchor='sw'); # 表示吧按钮设置在左下未知 side有四个值TOP,BOTTOM,LEFT,RIGHT 默认TOP
quitBtn = Button(root,text="退出", command=quit); # command表示点击会退出方法
quitBtn.pack(side=RIGHT,anchor='se'); # anchor表示对齐方式 sw(southwest)西南方向
# 一共9个值 分别n(北),s(南),w(西),e(东),nw(西北),sw(西南),se(东南),ne(东北),center(中间) 默认center
writeBtn = Button(root,text="写日记",command = write); # command表示点击时会执行的方法
writeBtn.pack(side=RIGHT,anchor='se');
readBtn = Button(root,text="看日记", command=read);
readBtn.pack(side=RIGHT,anchor='se');
textVar = StringVar(); # StringVar 是一个字符串变量类型
# Entry 可以类比html 的input(type="text")
entry = Entry(root,textvariable = textVar); # Entry是一个简单的输入空间 ,textvarible 表示文本框中的值 textvariable =textVar是为了方便我们后期对标题的操作
text =Text(root); #Text是用来显示多行文本(可以类比html textare)
listBox = Listbox(root, height = 300);
label = Label(root);
label.pack();
root.mainloop();