项目一:文本编辑器

效果图:

 分析:

1.图形用户界面

2.读写文本文件

GUI编程:

1.定义(P67):

        图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。用户通过窗口、按键、菜单等图形对象向计算机等电子设备发出指令,其接收指令后,通过图形反馈操作的结果。

2.Tkinter模块:

        Python 的标准 GUI 库。Python 使用Tkinter可以快速的创建GUI应用程序。由于Tkinter是内置到 python 的安装包中,只要安装好Python之后就能导入Tkinter模块,而且 IDLE 也是用Tkinter编写而成,对于简单的图形界面Tkinter还是能应付自如。

3.tkinter的使用:

扫描二维码关注公众号,回复: 17234905 查看本文章

        (1)模块的导入:from tkinter import * :

        (2)使用:

1.创建主窗口:root=Tk()   【root是一个主窗口对象】

2.创建若干个控件:控件对象=控件(root,控件参数设置)

3.将控件显示出来:控件对象.pack()  【pack显示方式】

4.让主窗口持续显示:root.mainloop()

        (3)窗口及控件介绍:

          1.主窗口Tk[所有控件都需要附着在界面上]:

        介绍:主窗口是所有控件附着的基础,所有控件都需要附着在界面上,如果程序中没有指定控件附着的窗口,将默认附着到主窗口Tk中,如果程序中没有定义Tk,那么将自动创建一个

          常见属性【想要初始化主窗口的属性需要使用 主窗口对象.属性(“参数”) :

          title:窗口标题

          geometry:窗口大小,大写格式是”宽度x高度+x位置+y位置”【注意不是*是x】,其中x,y将左上角作为(0,0)

          resizable(width=False, height=False) 窗体宽高是否可被拉伸

          2.按钮Button:

        介绍:按钮        

        常用参数设置【可在创建按钮的时指定,也可创建后使用:按钮对象.config()】

        text:按钮上的文本显示

        font:字体,使用元组来指定一个字体

        background[可缩写为bg]:背景色,取值可未英文颜色字符串,或者RGB值

        command:当按下按钮时调用的方法

        relief:边框的装饰["flat", "raised", "sunken", "solid", "ridge", "groove"]

        3.Entry:

        介绍:单行文本输入域。

        

        参数设置:可以参考按钮Button

        textvariable属性:

        varin=StringVar()  #创建一个string类型的对象

        Entry(root,textvariable=varin).pack() #使用textvariable将变量与Entry绑定

        varin.get() #获取文本框中值

        varin.set() #文本框中显示值

        Tkinter 支持将很多 GUI 组件与变量进行双向绑定,执行双向绑定后编程非常方便:如果程序改变变量的值,GUI 组件的显示内容或值会随之改变。当 GUI 组件的内容发生改变时(比如用户输入),变量的值也会随之改变。

        为了让 Tkinter 组件与变量进行双向绑定,只要为这些组件指定 variable(通常绑定组件的 value)、textvariable(通常绑定组件显示的文本)等属性即可。

        但这种双向绑定有一个限制,就是 Tkinter不允许将组件和普通变量进行绑定,只能和 tkinter 包下 Variable 类的子类进行绑定。该类包含如下几个子类:

        ShringVar():用于包装str 值的变量。

        IntVar():用于包装整型值的变量。

        DoubleVar():用于包装浮点值的变量。

        BooleanVar():用于包装bool值的变量。

        对于 Variable 变量而言,如果要设置其保存的变量值,则使用它的 set() 方法;如果要得到其保存的变量值,则使用它的 get() 方法。

         4.Text:

        介绍:多行文本输入域。

        

        参数设置:可以参考按钮Button

        text.delete(0.0,END)  # 清空文本框内容

        text.insert(END,“增加的内容”) #将外部内容增加到Text中显示

        5.框架Frame:

        介绍:一个容器窗口部件。可以有边框和背景。Frame默认是没有大小的,设置高度和宽度,而当加了控件到Frame后它会“缩水”【这里缩水是因为Frame自动缩小到刚好能包裹控件】,需要在显示的时候强制设置大小比如pack(fill=X),这是强制填充水平方向,又或者使用 Frame对象.pack_propagate(0),这个函数可以使得设置的高度和宽度生效。

frm = Frame(root)    #无大小,自动缩小到刚好能包裹控件
Label(frm, text='输入密码:', font=('Arial', 10)).pack()

        6.控件的布局(定位):

        A.用pack方法定位控件

        pack()方法的side参数,用来指定控件在容器中的排列方式,参数值可以为TOP,BOTTOM,LEFT和RIGHT。

        B.用grid()方法定位控件

           grid()方法以表格的行列方式对控件进行定位,控件所在的行列位置由row和column两个参数决定,前者代码行数,后者代表列数。

        C.用place()方法定位控件

            此方法通过参数x,y来定位控件左上角在容器中和坐标,因此是一种控件的绝对定位方式。

4.示例:旅行线路添加界面设计

代码示例:

from tkinter import *
r=Tk()
entry_file = Entry(r,width=40)  # 创建一个文本输入框,用来设置文件路径
entry_file.pack(side=TOP)  # 放置该输入框
frm=Frame(r)
frm.pack()
btn_1 = Button(frm, text='添加线路')  # 创建按钮用于打开文件
btn_2 = Button(frm, text='查询线路')  # 创建按钮用于保存文件
# 放置按钮
btn_1.pack(side=LEFT)
btn_2.pack(side=RIGHT)

 读写文本文件:

1.文件(P69):文件是存储在外存储设备中的相关数据的集合。

2.Python写入文本文件:

        第一步:通过python的open()函数来创建文件对象。所谓文件对象,就是一个提供存取文件的接口,它并非实际的文件。当打开文件之后,必须通过文件对象执行读和写的操作。

        open(file,mode)

        file:以字符串来指定想要打开文件的路径和文件名

        mode:以字符串指定打开文件的存取模式

        

        第二步:使用文件对象所提供的write()方法将文字写入文件。

        第三步:关闭文件close()

        代码示例:

c=open("旅行线路.txt","w")    
b=c.write(“盐城-南京-上海-杭州-盐城”)
c.close()

 3.Python读取文本文件: 

        第一步:利用open()打开指定的文件

        第二步:利用read()、readline()、readlines()方法读取文件

        第三步:调用clos()方法关闭文件

        (1)read()方法:从当前位置读取到指定字符数之后停止。

        (2)readline()方法:整行读取。

        (3)readlines()方法:一次读取文件的所有行,再以列表类型返回所有行。

        示例:

         

         

 4.旅行线路添加:

from tkinter import *
root=Tk()
root.title("添加线路")
root.geometry("600x100")
root.resizable(0,0)
var=StringVar()

def intomap():
    c=open("旅行线路.txt","a+")
    c.write(var.get()+"\n")
    c.close

Label(root,text="请输入线路",font=("Arial",10)).pack()
Entry(root,textvariable=var,width=550).pack()
Button(root,text="添加线路",command=intomap,relief="solid",width=10).pack()
root.mainloop()

5.制作文本编辑器:

from tkinter import * # 导入tkinter库
r = Tk()  # 创建窗口
r.title('文本编辑器')  # 设置标题

def do_open():
    # 打开文件
    file_path = entry_file.get()  # 文件路径
    c=open(file_path,"r",encoding="utf-8")
    #text.insert(END,c.read())
    content=c.read()  #一次性读取文件内容,对大文件不宜使用
    c.close()
    text.delete(0.0,END)  # 清空文本框内容
    text.insert(END,content) 
  
def do_save():
    content = text.get(0.0,END)  # 获取文本框内容
    file_path = entry_file.get()  # 文件路径
    c=open(file_path,"w+")
    c.write(content)  # 写入数据到文件中

frm=Frame(r)
frm.pack()
entry_file = Entry(frm,width=40)  # 创建一个文本输入框,用来设置文件路径
entry_file.pack(side=LEFT)  # 放置该输入框

btn_open = Button(frm, text='打开',command=do_open)  # 创建按钮用于打开文件
btn_save = Button(frm, text='保存',command=do_save)  # 创建按钮用于保存文件
# 放置按钮
btn_open.pack(side=LEFT)
btn_save.pack(side=LEFT)
# 创建多行文本框,用于编辑文件
text = Text(r)
text.pack() 

r.mainloop()  # 进入消息循环

猜你喜欢

转载自blog.csdn.net/qq_28782419/article/details/127752001