桌面极简日记
Tkinter 是什么?
是Python的GUI库,用于制作图形界面的一个工具,默认集成在python包里,使用import Tkinter导入。
刚开始想做一个GUI最开始的疑问是框架是怎么起来的
一个空白的界面
from Tkinter import * root = Tk() root.mainloop()
Tkinter import 导入模块
root.mainloop() 循环状态,界面会一直停留着。
空白界面添加 button
# -*- coding: utf-8 -*- from Tkinter import * root = Tk() b = Button(root, text="我是日记") b.pack()
root.mainloop()
添加中文支持 # -- coding: utf-8 -
添加button widget
b = Button
b.pack()
界面大小控制
# -*- coding: utf-8 -*- from Tkinter import * root = Tk() b = Button(root, text="我是日记") b.pack() f = Frame(root, height=320, width=320) f.pack() root.mainloop()
控制框架尺寸
f = Frame(root, height=320, width=320)
f.pack_propagate(0)
f.pack()
上面尝试来源于 An Introduction To Tkinter 目的在于解决内心无方向感。
系统:Mca 10.10.5
python版本:Python 2.7.10
目前暂时有的功能
- 读取历史日记
- 输入日记同步到终端
涉及到Tiniter几个组件
- label 标签
- Entry 输入框
- Button 按钮
这节涉及到了class
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets()
def createWidgets(self): #用于后面添加组件
root = Tk()
root.geometry('700x30+300+300') #定义窗口位置跟大小
app = Application(master=root)
app.master.title('极简桌面日记') #标题
app.mainloop()
简单框架
添加label widgets
self.label = Label(self, text='请写日记').pack(side=LEFT)
添加Entry wigets
self.entrythingy = Entry(self, width=74)
self.entrythingy.pack(side=LEFT)
- width 输入框尺寸
- side=LEFT 输入框位置
要实现一个输出框输入同步到终端的功能,参考帮助文档 Coupling Widget Variables 例子
self.contents = StringVar() #为输入设置一个变量
self.entrythingy["textvariable"] = self.contents #告知变量内容
self.entrythingy.bind('<Key-Return>', #当按回车键输出打印
self.print_contents)
def print_contents(self, event):
contents = self.contents.get()
DiaryFile = open('mydiary.txt','a+')
DiaryFile.write('\n' + contents)
DiaryFile.close()
print "hi.contents of entry is now---->", \
contents
定义函数,把输出写入到文件。
添加Button wigets
def read_diary(self):
DiaryFile = open('mydiary.txt','r') #打开读取文档
print DiaryFile.read()
DiaryFile.close()
self.read_file = Button(self)
self.read_file["text"] = "历史日记", #按钮名字
self.read_file["command"] = self.read_diary #处方函数功能
self.read_file.pack(side=RIGHT) #位置
把整合成一个函数
def createWidgets(self):
self.label = Label(self, text='请写日记').pack(side=LEFT)
self.entrythingy = Entry(self, width=74)
self.entrythingy.pack(side=LEFT)
self.contents = StringVar()
self.entrythingy["textvariable"] = self.contents
self.entrythingy.bind('<Key-Return>',
self.print_contents)
还需添加功能
- 无法写入中文
- GUI界面无法显示输入内容
20151031