桌面极简日记

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几个组件

  1. label 标签
  2. Entry 输入框
  3. 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