科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件用Python脚本语言建立一个基于应用程序的GUI快速启动

用Python脚本语言建立一个基于应用程序的GUI快速启动

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

非常感谢Python脚本语言强调简洁的语法,这意味着你不需要成为Python编程高手就能在程序中使用图形用户界面。

作者:builder.com.cn 2007年2月27日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

保存会话间的数据

做了这些以后,我们的程序就可以用了,但是当我们关闭程序后,所以的易事贴都会消失——我们可以通过保存列表的内容到一个文件中,同时在程序运行的时候下载它来安装这个程序。为实现这个我们将使用pickle模块——Python的系列版本,或者使用集结待发的数据类型到文件中。首先我们需要输入模块:

import pickle

然后我们得到一个变量,易事贴,这个变量包含了易事贴列表。为了将它保存到一个文件中,我们仅仅需要打开文件写入,并使用dump函数。你可能会注意到第三个按钮的回叫信号是空的,让我们来改变它以便将当前的易事贴列表保存到文件中:

def Save():

f = file("notes.db", "wb")

notes = listbox.get(0, END)

pickle.dump(notes, f)

现在,当按下“保存”按钮,我们可以在桌面上得到我们的易事贴的副本。这个不会给我们太多的帮助,除非我们有一些下载这些易事贴的方法,所以让我们在启动主循环前正确地把列表框填满:

try:

f = file("notes.db", "rb")

notes = pickle.load(f)

for item in notes:

listbox.insert(END,item)

f.close()

except:

pass

我们需要用一个try语句将所有的东西捆绑起来,以防文件打开抛出一个异常,也就是说,如果文件“notes.db”不存在的话,应该抛出一个异常,产生警告。然而,如果一个异常被抛出,我们不会真正的注意到它,我们只是仅仅不会下载任何易事贴到列表中而已。

这样,你有了一个用Python和Tk写的,不超过70行代码的,可运行的迷你易事贴程序——用键盘和鼠标输入来完成,并且可以下载和保存数据。使用这个,你能看到建立一个基于应用程序的快速GUI是多么简单的事情,但是这个程序只有少许的改进,比如,多线程文本区域,或者复制一个易事贴到剪贴版中,自动保存易事贴,等等,它对于保存你的踪迹到列表中来说,是一个恰当地唾手可得的方法。我将把这个作为一个练习留下来。如果你想找到更多的关于你能用Python在Tk做些什么的文挡,最好的地方是查看这里的库文件。如果你一直跟着做下来的话,程序应该看上去像下面这样:

用Python脚本语言建立一个基于应用程序的GUI快速启动

下面是这个例子的代码:

#!/usr/bin/python

from Tkinter import *

import pickle

root = Tk()

root.geometry("600x400")

root.title("Note Taker")

def Enter():

text_contents = text.get()

listbox.insert(END, text_contents)

text.delete(0,END)

def Remove():

listbox.delete(ANCHOR)

def Save():

f = file("notes.db", "wb")

notes = listbox.get(0, END)

pickle.dump(notes, f)

def ReturnInsert(event):

Enter()

def DeleteCurrent(event):

Remove()

def CopyToText(event):

text.delete(0, END)

current_note = listbox.get(ANCHOR)

text.insert(0, current_note)

textframe = Frame(root)

listframe = Frame(root)

enter_button = Button(textframe, text="Enter", command = Enter)

remove_button = Button(textframe, text="Remove", command = Remove)

save_button = Button(textframe, text="Save", command = Save)

text = Entry(textframe)

scrollbar = Scrollbar(listframe, orient=VERTICAL)

listbox = Listbox(listframe, yscrollcommand=scrollbar.set, selectmode=EXTENDED)

scrollbar.configure(command=listbox.yview)

text.bind("<Return>", ReturnInsert)

listbox.bind("<Double-Button-3>", DeleteCurrent)

listbox.bind("<Double-Button-1>", CopyToText)

text.pack(side=LEFT, fill=X, expand=1)

enter_button.pack(side=LEFT)

remove_button.pack(side=LEFT)

save_button.pack(side=LEFT)

listbox.pack(side=LEFT,fill=BOTH, expand=1)

scrollbar.pack(side=RIGHT, fill=Y)

textframe.pack(fill=X)

listframe.pack(fill=BOTH, expand=1)

try:

f = file("notes.db", "rb")

notes = pickle.load(f)

for item in notes:

listbox.insert(END,item)

f.close()

except:

pass

root.mainloop()

责任编辑:德东

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章