python2.7实现简单日记本,兼容windows和linux

上代码:

#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();




  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值