python学习笔记之操作文件,模块使用

文件操作:

  基础操作:   

       创建/打开文件:

#语法
file=open(filename,mode=’r’,buffering=-1,encoding=None,errors=None,newline=None,closefd=True,openr=None)
   filename  创建或打开的文件名称(在同一个文件夹内时),绝对路径(不在同一个文件夹内时)
   mode      文件的打开方式,默认打开方式只读(r)
   buffering 设置缓冲模式
             -1 :自动设置缓冲区,通常为4096或8192个字节
              0 :关闭缓冲区直接写入文件中
   Encoding  打开文件的编码方式
   errors    编码错误时的处理方式
   newline   换行方式
   closefd   文件描述时使用
   opener    文件描述时使用

#例子:
file = open('test.txt','w')
file.write('第一次写入')
file = open('test.txt','r+')
file.write('第二次写入覆盖第一次写入')

file = open('test.txt','w')
file.write('第一次写入。')
print(file)
file = open('test.txt','a+')
file.write('第二次追加写入。')
print(file)

   mode常用的打开方式:

          关闭文件:  

#语法
file.close()

        读取文件:

常用方法说明

file.read([number])

这种方式用于读取文本的指定字符串长度

file.readline()

这种方式读取文本的第一行内容

flie.readlines()

这种方式读取了文本的所有内容,并把每一行内容放到一个list中

file.flush()

刷新缓冲区,立即写到磁盘上

file.seek(index)

移动文件到指定的索引处,从此位置开始读取,但写入从最后开始

with open

使用完自动关闭,省去file.close()操作

encoding='utf-8' 

读写的文件含中文时添加

# file.read([number]) 读写指定字符串
file = open('test.txt','w')
file.write('第一次写入的内容。')
file = open('test.txt','a+')
file.write('第二次追加写入的内容。')
print(file.read(8))
file.close()

#file.readline() 读取一行内容
file = open('test.txt','w')
file.write('第一次写入的内容。')
file = open('test.txt','a+')
file.write('\n')
file.write('第二次追加写入的内容。')
print(file.readline())
file.close()

#file.readlines() 按行全部读取,返回列表的形式
file = open('test.txt','w')
file.write('第一次写入的内容。')
file = open('test.txt','a+')
file.write('\n')
file.write('第二次追加写入的内容。')
print(file.readlines())
file.close()
file = open('test.txt','r')
print(file.readlines())
file.close()

#file.seel(index) 按照索引读取

      管理文件:

                os模块:

常用方法功能

os.access(path, name)

特权模式

os.chdir(path)

改变当前工作目录

os.chflags(path, flags)

设置路径的标记为数字标记

os.chmod(path, name)

更改权限

os.chown(path, uid, gid)

更改文件所有者

os.chroot(path)

改变当前进程的根目录os.close(x)

os.close(x)

关闭文件

os.fchdir(x)

通过文件描述符改变当前工作目录

os.getcwd()

返回当前工作目录

os.listdir(path)

返回当前目录下的所有文件及文件夹的列表

os.mkdir(path[,name])

创建一个名字为name的文件夹名

os.open(file)

打开一个文件

os.remove(path)

删除path路径的文件

os.rename(src,dst)

修改文件名,src为源文件,dst为目标文件

os.rmdir(path)

删除path对应的目录

import os
os.name#返回nt为windows,posix为Linux、Unix或mac os。
os.linesep#当前系统的换行符
os.sep#当前系统的分隔符
os.name
print(os.name,os.linesep,os.sep,os.name)

                 os.path模块:

常用方法功能

os.path.abspath(path)

返回路径名路径的规范化绝对化版本

os.path.basename(path)

返回路径名路径的基名称

os.path.commonprefix(list)

返回序列路径中每个路径名的最长公共子路径

os.path.dirname(path)

返回路径名路径的目录名

os.path.exists(path)

如果路径引用现有路径或打开的文件描述符,则返回True,中断的符号链接返回Flase

os.path.lexists

如果路径引用现有路径,则返回True

os.path.expanduser(path)

返回参数,初始组件为~或~user替换为该用户的主目录

os.path.expandvars(path)

返回环境变量展开的参数

os.path.getatime(path)

返回路径的最后访问时间

os.path.getmtime(path)

返回上次修改路径的时间

os.path.getctime(path)

返回文件 path 的创建时间

os.path.getsize(path)

返回路径的大小,以字节为单位

os.path.isabs(path)

如果路径是绝对路径名,则返回True

os.path.isfile(path)

如果路径是文件,则返回True

os.path.isdir(path)

如果路径是目录,则返回True

os.path.islink(path)

如果路径是链接,则返回True

os.path.ismount(path)

如果路径是挂载点,则返回True

os.path.join(path1[, path2[, ...]])

把目录和文件名合成一个路径

os.path.normcase(path)

转换path的大小写和斜杠

os.path.normpath(path)

规范path字符串形式

os.path.realpath(path)

返回path的真实路径

os.path.relpath(path[, start])

计算相对路径

os.path.samefile(path1, path2)

判断目录或文件是否相同

os.path.sameopenfile(fp1, fp2)

判断fp1和fp2是否指向同一文件

#os.path模块:针对路径的模块,模块内提供对文件、目录和路径管理的函数
  最常用:
    abspath()         返回路径名路径的规范化绝对化版本
    exists(path)      如果路径引用现有路径或打开的文件描述符,则返回True,中断的符号链接返回Flase
    join(path,name)   把目录和文件名合成一个路径
    basename(path)   返回路径名路径的基名称
    dirname(path)     返回路径名路径的目录名
    isdir(path)       如果路径是目录,则返回True

import os
print('当前目录:',os.getcwd())
print('判断当前目录是否存在,存在的话返回True',os.path.exists(os.getcwd()))

        目录管理:

                创建一级目录:

#语法:
os.mkdir(path)

#例子:
import os 
if not os.path.exists('一级目录'):
    os.mkdir('一级目录')    
    print('创建完成')
else:
    print('目录已存在')

             创建多级目录:

#语法:
os.makedirs(path)

#例子:
import os
now = os.getcwd()
os.makedirs('one\two\three')
print('创建成功')

             删除目录:

#语法:
 os.rmdir(path) 删除的目录中不存在子目录或者文件

#例子:
import os
os.rmdir('一级目录')
print('删除完成')

       项目管理:

               重命名:

#语法:
os.rename(src,dst)
  src  更改的文件或者目录名
  dst  新的名字

#例子:
import os
print(os.getcwd())#如果不知道当前的目录,先输出找到当前的目录。
os.mkdir(r'C:\Users\轻烟\PycharmProjects\untitled1\teach\new')
                #注意这个r,如果存在\t,\n这种内容,在前面加r。

import os
os.rename(r'C:\Users\轻烟\PycharmProjects\untitled1\teach\new',r'C:\Users\轻烟
\PycharmProjects\untitled1\teach\newname')

             删除文件:

#语法:
os.remove(path)
 path 删除文件的路径,使用相对路径或者绝对路径,最好使用绝对路径

#例子:
#相对路径
import os
os.remove('tst.py')

#绝对路径
import os
os.remove(r'C:\Users\轻烟\PycharmProjects\untitled1\venv\tst.py') 

          获取文件信息:

#语法:
os.stat() 获取文件相关信息

#例子:
import os
file = os.stat('test.py')
print(os.path.abspath('test.py'))#先访问路径
print(file.st_dev)#设备号
print(file.st_size)#文件大小
print(file.st_atime)#最后一次访问
print(file.st_mtime)#最后一次修改时间

模块导入: 

  方法:    

import  模块名

form  模块名   import 模块/类/函数/变量/*(全部导入)

import 模块名  as 别名

form  模块名   import 模块/类/函数/变量/*(全部导入)  as 别名

GUI编程:

   含义

          图形用户界面,又称图形用户接口,简称GUI

          是指采用图形方式显示的计算机操作用户界面 

 常用的GUI模块:

模块名说明
TkinkerTkinter是一种标准的接口,这个模块存在于Python内部中供我们使用,它是一个轻量级的跨平台工具
wxPythonwxPython是一种较为流行的GUI模块
Flexx倾向于web方面的模块
KivyKivy是开源Python函式库,用于开发行动应用程序和其它采用自然用户界面的多点触控应用软件
PyQtPyQt 是 KDE 的底层 GUI 库的 Python 封装
PyGTKPyGTK 是 Gnome 的底层 GUI 库 GTK+ 的 Python 封装

    最常用的:

模块名说明下载
TkinkerTkinter是一种标准的接口,这个模块存在于Python内部中供我们使用,它是一个轻量级的跨平台工具内置,无序安装
wxPythonwxPython是一种较为流行的GUI模块pip --default-timeout=100 install -U wxPython

注意:python一定要使用3.9版本以及以下版本

          下载时间很长,建议这个时间追个剧或者刷个视频

下载wxPython成功 :

     黄色内容是提示你要更新pip,不是报错信息

     python -m pip install --upgrade pip  更新pip即可

  

Tkinter模块:

    常用控件:

常用控件控件作用

Button

按钮,点击触发事件

Canvas

画布,即GUI界面的大小

Tk

创建应用程序主窗口

Checkbutton

可选择的多个按钮

Entry

输入框

Frame

窗口,可承载其他控件

Label

标签,可显示文字或者图片

Listbox

列表框,可从列表框中选择一个

Menu

菜单栏,可以选择一个

Menubutton

菜单按钮

Message

消息文本框

Radiobutton

单选按钮

Scale

滑动条

Scrollbar

滚动条

Text

文本供使用者输入信息

Toplevel

创建一个弹出式窗口

   创建窗口:

#语法:
window = tkinter.Tk()
window.mainloop()        #启动窗口

#例子:
import tkinter
window = tkinter.Tk()
window.minsize(366, 366)    #设置最小尺寸
window.maxsize(566, 566)    #设置最大尺寸
window.mainloop()

  Label控件:

#语法
组件名 = tkinter.Label(放置的窗口,文本或图片,附加内容)
组件名.pack(side = ‘位置’)
   side取值:
      不设置   默认设置,居中对齐
     left    左对齐 
     right   右对齐
     top     上对齐
     bottom  下对齐

import tkinter
def main():
    win = tkinter.Tk()
    win.minsize(366, 366)#最小尺寸
    win.maxsize(888, 888)#最大尺寸
    area_one = tkinter.Label(win,text='This is area_one',font=("华文行楷", 20), fg="red")
    area_one.pack(side = 'left')
    area_two = tkinter.Label(win,text='This is area_two',font=("黑体", 20), fg="blue")
    area_two.pack(side = 'right')
    area_three = tkinter.Label(win,text='This is area_three',font=("宋体", 20), fg="black")
    area_three.pack()
    win.mainloop()
if __name__ == '__main__':
    main()

Frame控件:

#作用:可在窗口内存放管理控件的容器
 side取值:
     不设置   默认设置,居中对齐
     left    左对齐 
     right   右对齐
     top     上对齐
     bottom  下对齐

import tkinter
def main():
    win = tkinter.Tk()
    win.minsize(366, 366)#最小尺寸
    win.maxsize(888, 888)#最大尺寸
    frame_one = tkinter.Frame(win)#使用Frame控件
    area_one = tkinter.Label(frame_one,text = 'dotcpp',font = ("华文行楷", 20), fg="red")
    area_one.pack(side = 'top')#放在上边
    area_two = tkinter.Label(frame_one,text = 'Python',font = ("黑体", 20), fg="blue")
    area_two.pack(side = 'bottom')#放在下面
    frame_one.pack(side = 'left')#放在左边
#分界线 上面为左边的容器,下面为右边的容器
    frame_two = tkinter.Frame(win)
    area_one = tkinter.Label(frame_two,text = 'dotcpp',font = ("华文行楷", 20), fg = "red")
    area_one.pack(side = 'top')#放在上面
    area_two = tkinter.Label(frame_two,text = 'Python',font = ("黑体", 20), fg = "blue")
    area_two.pack(side = 'bottom')#放在下面
    frame_two.pack(side = 'right')#放在右边
    win.mainloop()
if __name__ == '__main__':
    main()

Button控件:

import tkinter
import tkinter.messagebox
win = tkinter.Tk()
win.minsize(166, 40)  # 最小尺寸
def button_event():
    tkinter.messagebox.showinfo("Button事件", "学习很快乐!!!!!!!!!!")
button_one = tkinter.Button(win, text = "www.dotcpp.com", command = button_event)
button_one.pack()
win.mainloop()

Entry控件:

#语法:
my_entry = Entry(容器,可选项)   在键盘输入的文本信息
     容器:内容存放位置
    可选项:如下表

可选项样式

作用

bg和bd

背景颜色和边框大小

cursor光标的形状
font文本字体
exportselection

文本框内容是否复制功能

fg文字颜色
highlightcolor边框高亮的颜色
justify对齐方式
relief边框样式
selectbackground

选择的文本背景颜色

selectborderwidth选择的文本背景边框宽度
selectforeground选择的文字颜色
state只读或可写控制
textvariable文本框的值
width文本框宽度
xscrollcommand水平方向滚动条

   常用方法:

常用方法作用

delete(first,last=None) 

删除first-last中的所有内容

delete(0,END)删除输入框所有内容

get()

获取输入框内的所有内容

icursor(index)

移动光标到index参数的位置

index(index) 

返回index参数对应的序号

insert(index, text) 

把text参数中的内容插入到索引为index的位置

Select_clear()

清空文本框

xview(index)

设置文本框链接的水平滚动条
#例子

import tkinter as tk
import tkinter.messagebox
 
win = tk.Tk()
 
frame_name = tk.Frame(win)#创建容器来存放登陆的Label(文本框)与Entry(输入框)
 
frame_name.pack(side="top")#使该容器在页面的顶部
label_name = tk.Label(frame_name, text="Your Name : ")
label_name.pack(side="left")
entry_name = tk.Entry(frame_name, bd=5)
entry_name.pack(side="right")#在容器内创建Label与Entry,并使label在左,entry在右
 
# 下面的同理:
frame_password = tk.Frame(win)
frame_password.pack()
label_password = tk.Label(frame_password, text="Your Password : ")
label_password.pack(side="left")
entry_password = tk.Entry(frame_password, bd=5)
entry_password.pack(side="right")
 
 
def login():
    if entry_name.get() == "ll":
        if entry_password.get() == "lll":
            print(tkinter.messagebox.showinfo("login", "Success!"))
        else:
            print(tkinter.messagebox.showerror("login", "Failed!"))
            entry_name.delete(0, "end")
            entry_password.delete(0,"end")
    else:
        print(tkinter.messagebox.showerror("login", "Failed!"))
        entry_name.delete(0, "end")
        entry_password.delete(0,"end")
 
def signin():
    print(tkinter.messagebox.showerror("signin", "Without Code!"))#必须先定义函数,否则点击按钮调用函数时会报函数不存在的错误
 
frame_button = tk.Frame(win)#创建容器以存放按钮
frame_button.pack(side="bottom")#使该容器位于页面最下方
button_login = tk.Button(
    frame_button,
    text="login",
    activeforeground="red",
    activebackground="yellow",
    width="7",
    command=login
# command的意思是执行已定义的函数,不可执行下文中出现的函数(未定义的函数)
)
button_login.pack(side="left")
 
# 下面的同理:
button_signin = tk.Button(
    frame_button,
    text="signin",
    activeforeground="blue",
    activebackground="pink",
    width="7",
    command=signin,
)
button_signin.pack(side="right")
 
win.mainloop()

  Radio控件:

import tkinter
win = tkinter.Tk()
win.title("Python教程")#给窗口取一个标题
win.minsize(366, 50)  # 定义一个最小尺寸
def get_data():
    print('选择的为第%d项'%x.get())
x = tkinter.IntVar()# 在这里我们把一组单选框绑定为同一个变量
radio_one = tkinter.Radiobutton(win, text="选项1", value=1, variable=x,
                             command=get_data)
radio_one.pack()
radio_two = tkinter.Radiobutton(win, text="选项2", value=2, variable=x,
                             command=get_data)
radio_two.pack()
win.mainloop()

Check控件:

import tkinter
win = tkinter.Tk()
win.title("Python教程")
win.minsize(200,200)
def get_data():
    my_str = ''
    if x.get() == True:
        my_str += "已选择选项1\n"
    if y.get() == True:
        my_str += "已选择选项2\n"
    if z.get() == True:
        my_str += "已选择选项3\n"
    text.delete(0.0, tkinter.END)    # 清除text文板框中的内容
    text.insert(tkinter.INSERT, my_str)    #把上面的信息插入到文本框中
x = tkinter.BooleanVar()
ckbutton_one = tkinter.Checkbutton(win, text="选项1", variable=x,
                             command=get_data)
ckbutton_one.pack()
y = tkinter.BooleanVar()
ckbutton_two = tkinter.Checkbutton(win, text="选项2", variable=y,
                             command=get_data)
ckbutton_two.pack()
z = tkinter.BooleanVar()
ckbutton_three = tkinter.Checkbutton(win, text="选项3", variable=z,
                             command=get_data)
ckbutton_three.pack()
text = tkinter.Text(win, width=50, height=5)
text.pack()
win.mainloop()

Canvas控件:

#语法:
my_canvas = Canvas ( 父类, 可选项 )
  父类  一层窗口名,
 可选项 有bd、bg、continue、cursor、height、width、highlightcolor、relief、scrollregion

   绘制图形的方法:

  •       create_line − 创建线条
#语法:
canvas.create_line(x1, y1, x2, y2, ..., xn, yn, options)
  左上角 右下角的坐标(x1,y1)(x2,y2)

#例子:
import tkinter
class TK:
    def __init__(self):
        self.window = tkinter.Tk()
        self.canvas = tkinter.Canvas(self.window,width = 300,height = 300,bg = 'pink')
        self.canvas.create_line(30,30,100,200,200,200,300,200,300,300)
        self.canvas.pack()
        tkinter.mainloop()
m = TK()
  • create_rectangle − 创建矩形

#语法:
canvas.create_rectangle(x1,y1,x2,y2,可选项) 
     左上角 右下角的坐标(x1,y1)(x2,y2)
#例子:
import tkinter
class TK:
    def __init__(self):
        self.window = tkinter.Tk()
        self.canvas = tkinter.Canvas(self.window,width = 300,height = 300,bg = 'pink')
        self.canvas.create_rectangle(100,100,200,200)
        self.canvas.pack()
        tkinter.mainloop()
m = TK()
  • create_oval − 创建椭圆

#语法
canvas.create.oval(x1,y1,x2,y2,可选项)
    左上角 右下角的坐标(x1,y1)(x2,y2)
  • create_arc − 创建弧形

#语法:
canvas.create_arc(x1,y1,x2,y2,start = angle,extent = width,可选项)
     左上角 右下角的坐标(x1,y1)(x2,y2)
     start   弧形的起始角度
     extent  弧形逆时针角度范围

#例子:
import tkinter
class TK:
    def __init__(self):
        self.window = tkinter.Tk()
        self.canvas = tkinter.Canvas(self.window,width = 300,height = 300,bg = 'pink')
        self.canvas.create_arc(60,60,220,220,start =0,extent = 120,fill ='blue')
        self.canvas.pack()
        tkinter.mainloop()
m = TK()
  • create_polygon − 创建多边形

#语法:
canvas.create_polygon(x1,y1,x2,y2,.....xn,yn,可选项)

#例子:
import tkinter
class TK:
    def __init__(self):
        self.window = tkinter.Tk()
        self.canvas = tkinter.Canvas(self.window,width = 300,height = 300,bg = 'pink')
        self.canvas.create_polygon(150,0,200,100,300,100,200,185,280,280,150,230,20,280,100,185,
        0,100,100,100,fill ='red')
        self.canvas.pack()
        tkinter.mainloop()
m = TK()

wxPython模块:

     基础:

#OnInit()   初始化这个子类
#Frame框架   容器,存放主程序的标题和功能
wx.Frame(parent,id=-1,title=’’,style=’’,name=’’,pos=wx.DefaultPositon,size=wx.DefaultSize)
   parent    框架所处的位置,父窗口的名字,顶级窗口:None,
   id        新窗口的ID号,通常设置为-1,
   title     窗口名称
   size      窗口大小
   style     窗口的类型
   name      框架的内部名字
   pos       对象,指定新窗口在界面中的位置
   Default   默认参数


import wx
class App(wx.App):
    def OnInit(self):
        window = wx.Frame(parent = None,title = '初始化')
        window.Show()
        return True
if __name__ == '__main__':
    app = App()
    app.MainLoop()

    文本控件:

         静态文本控件:

#静态文本:屏幕显示的静态文字
#语法:
wx.StaticText(parent,id,label=’’,pos=wx.DefaultPositon,size=wx.DefaultSize,style=’’,name=’’)
  style取值:
     wx.ALIGN_CENTER      静态文本位于静态文本控件的中心
     wx.ALIGN_LEFT        文本在窗口部件中左对齐。这是默认的样式
     wx.ALIGN_RIGHT       文本在窗口部件中右对齐
     wx.ST_NO_AUTORESIZE  使用这个样式,在使用SetLabel()改变文本之后,静态文本控件不 
                          将自我调整尺寸

#修饰文本信息
wx.Font(pointSize,fimily,style,weight,underline=True,faceName=’’,encoding=wx.FONTENCODING_DEFAULT)
   pointSize   字体的尺寸
   family      字体的名字
   style       倾斜
   weight      宽度
   underline   下划线,True有,False为无
   faceName    字体名
   encoding   编码方式

#例子:
import wx
class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,"静态文本", size =(200, 170))
        panel = wx.Panel(self, -1)  #创建一个容器
        wx.StaticText(panel, wx.ID_ANY, "春夜喜雨 ——杜甫。", (0, 10),(145, -1),wx.ALIGN_RIGHT)
        text = wx.StaticText(panel, wx.ID_ANY, "好雨知时节,当春乃发生。", (0, 30),(160, -1),wx.ALIGN_RIGHT)
        text = wx.StaticText(panel, wx.ID_ANY, "随风潜入夜,润物细无声。", (0,50), (160, -1),wx.ALIGN_RIGHT)
        text =wx.StaticText(panel, wx.ID_ANY, "野径云俱黑,江船火独明。", (0,70),(160, -1),wx.ALIGN_RIGHT)
        text =wx.StaticText(panel, wx.ID_ANY, "晓看红湿处,花重锦官城。", (0,90),(160, -1),wx.ALIGN_RIGHT)
if __name__ == '__main__':
    app = wx.App()
    frame = Frame()
    frame.Show(True)
    app.MainLoop()

   文本输入控件:

#语法:
wx.TextCtrl(parent,id,value=’’,pos=wx.DefaultPositon,size=wx.DefaultSize,style,validator=wx.DefaultValidator,name=’’)
   validator  过滤数据
   style取值:
      wx.TE_CENTER           控件中的文本居中 
      wx.TE_LEFT             控件中的文本左对齐。
      wx.TE_NOHIDESEL        文本始终高亮显示,只适用于Windows 
      wx.TE_PASSWORD         不显示所键入的文本,代替以星号显示
      wx.TE_PROCESS_ENTER    使用该样式,用户在控件内按下回车键时,一个文本输入事件被触发
                             否则,按键事件内在的由该文本控件或该对话框管理
      wx.TE_PROCESS_TAB      指定该样式,通常的字符事件在Tab键按下时创建
                             否则,Tab由对话框来管理,通常是控件键的切换
      wx.TE_READONLY         文本控件为只读,用户不能修改其中的文本。
      wx.TE_RIGHT            控件中的文本右对齐

#例子:
import wx
class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,"登陆", size =(300, 300))
        panel = wx.Panel(self, -1)
        wx.StaticText(panel, wx.ID_ANY, "登录界面", (0, 10),(150, -1),wx.ALIGN_RIGHT)
        text = wx.StaticText(panel, wx.ID_ANY, "账户", (0, 50),(80, -1),wx.ALIGN_RIGHT)
        text = wx.StaticText(panel, wx.ID_ANY, "密码", (0, 90),(80, -1),wx.ALIGN_RIGHT)
        text = wx.TextCtrl(panel, wx.ID_ANY, "", (100,50),(100, 20),wx.ALIGN_LEFT)
        text = wx.TextCtrl(panel, wx.ID_ANY, "", (100,90),(100, 20),wx.TE_PASSWORD)
if __name__ == '__main__':
    app = wx.App()
    frame = Frame()
    frame.Show(True)
    app.MainLoop()

   按钮控件:

#语法:
wx.Button(parent,id,label,pos,size,style,validator,name)

#例子:
import wx
class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,"登陆", size =(300, 250))
        panel = wx.Panel(self, -1)
        wx.StaticText(panel, wx.ID_ANY, "登录界面", (0, 10),(150, -1),wx.ALIGN_RIGHT)
        self.text = wx.StaticText(panel, wx.ID_ANY, "账户", (0, 50),(80, -1),wx.ALIGN_RIGHT)
        self.text = wx.StaticText(panel, wx.ID_ANY, "密码", (0, 90),(80, -1),wx.ALIGN_RIGHT)
        self.text = wx.TextCtrl(panel, wx.ID_ANY, "", (100,50),(100, 20),wx.ALIGN_LEFT)
        self.text = wx.TextCtrl(panel, wx.ID_ANY, "", (100,90), (100, 20), wx.ALIGN_LEFT)
        self.button = wx.Button(panel, wx.ID_ANY, "登陆", (70,120),(50, 20),wx.ALIGN_LEFT)
        self.button = wx.Button(panel, wx.ID_ANY, "注册", (140,120), (50, 20), wx.ALIGN_LEFT)
if __name__ == '__main__':
    app = wx.App()
    frame = Frame()
    frame.Show(True)
    app.MainLoop()

    复选框控件:

import wx
class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,"复选框", size =(300, 250))
        panel = wx.Panel(self, -1)
        self.box = wx.CheckBox(panel, -1, "Checkbox1", pos=(50, 50), size=(80, 20))  # 创建控件
        self.box = wx.CheckBox(panel, -1, "Checkbox2", pos=(50, 70), size=(80, 20))  # 创建控件
        self.box = wx.CheckBox(panel, -1, "Checkbox3", pos=(50, 90), size=(80, 20))  # 创建控件
if __name__ == '__main__':
    app = wx.App()
    frame = Frame()
    frame.Show(True)
    app.MainLoop()

单选框控件:

import wx
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "选择一种喜欢的运动方式", size=(300, 100))
        panel = wx.Panel(self)
        wx.StaticText(panel, wx.ID_ANY, "选择一种喜欢的运动方式", (0, 10), (200, -1), wx.ALIGN_RIGHT)
        self.check1 = wx.RadioButton(panel, -1, "打篮球", pos=(60, 40), size=(50, 20), style=wx.RB_GROUP)
        self.check2 = wx.RadioButton(panel, -1, "打乒乓球", pos=(130, 40), size=(50, 20))
        self.check3 = wx.RadioButton(panel, -1, "跑步", pos=(200, 40), size=(50, 20))
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop(

布局方法:

     绝对布局:

              固定位置,窗口大小变化,不会影响控件的位置

     Sizer管理布局:

             分类:Sizer、WrapSizer、BoxSizer、GridSizer、FlexGridSizer、GridBagSizer和                                    StaticBoxSzer、StdDialogButtonSizer       

              BoxSizer布局:

                BoxSizer布局排布方式垂直或水平,一般是在创建的时候指定布局的方向

my_box  =  wx.BoxSizer(wx.HORIZINTAL)   #水平布局,括号为空默认是水平布局
My_box  =  wx.BoxSizer(wx.VERTICAL)     #垂直布局

#添加控件:
Add(parent,proportion=0,flag=0,border=0,userData=None)
     #添加到父窗口
Add(AnotherSizer,proportion=0,flag=0,border=0,userData=None)
     #添加到另一个布局,创建了新的空间
Add(AnotherSizer,proportion=0,flag=0,border=0,userData=None)

           flag: 

                flag:对齐、边框和尺寸参数

对齐标志作用
ALIGN_TOP顶对齐
wx.ALIGN_LEFT左对齐
wx.ALIGN_BOTTOM底对齐
wx.ALIGN_RIGHT右对齐
wx.ALIGN_CENTER居中对齐
wx.ALIGN_CENTER_VERTIAL垂直居中对齐
wx.ALIGN_CENTER_HORIZONTAL水平居中对齐
边框标志作用
wx.TOP设置有顶部边框,边框的宽度需要通过Add()方法的border参数设置
wx.BOTTOM设置有底部边框
wx.LEFT设置有左边框
wx.RIGHT设置有右边框
wx.ALL设置4面全有边框
尺寸标志作用
wx.EXPAND 调整子窗口(或控件)完全填满有效空间
wx.SHAPED调整子窗口(或控件)填充有效空间,但保存高宽比
wx.FIXED_MINSIZE调整子窗口(或控件)为最小尺寸
wx.RESERVE_SPACE_EVEN_IF_HIDDEN设置此标志后,子窗口(或控件)如果被隐藏,所占空间保留
#例子:
import wx
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "登录界面", size=(300, 300))
        panel = wx.Panel(self)#创建一个画布,然后创建功能区并放到画布上
        self.title = wx.StaticText(panel,label = '登陆界面')
        self.username = wx.StaticText(panel,label = '用户:')
        self.user_name = wx.TextCtrl(panel,style = wx.TE_LEFT)
        self.userpassword = wx.StaticText(panel,label = '密码:')
        self.user_password = wx.TextCtrl(panel,style = wx.TE_PASSWORD)
        self.button_login = wx.Button(panel,label = '登陆')
        self.button_register = wx.Button(panel,label = '注册')
        container_one = wx.BoxSizer(wx.HORIZONTAL)  # 创建一个box容器并控制水平排列
        container_one.Add(self.username,proportion = 0,flag = wx.ALL,border = 7)
        container_one.Add(self.user_name,proportion = 1,flag = wx.ALL,border = 7)
        container_two = wx.BoxSizer(wx.HORIZONTAL)  # 创建一个box容器并控制水平排列
        container_two.Add(self.userpassword,proportion = 0,flag = wx.ALL,border = 7)
        container_two.Add(self.user_password,proportion = 1,flag = wx.ALL,border = 7)
        container_three = wx.BoxSizer(wx.HORIZONTAL)  # 创建一个box容器并控制水平排列
        container_three.Add(self.button_login,proportion = 0,flag = wx.ALIGN_CENTER,border = 4)
        container_three.Add(self.button_register,proportion =0,flag = wx.ALIGN_CENTER,border = 4)
        sizers = wx.BoxSizer(wx.VERTICAL)  
        sizers.Add(self.title,proportion=0,flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTER,border=10)
        sizers.Add(container_one,proportion = 0,flag =wx.EXPAND|wx.LEFT|wx.RIGHT,border=40)
        sizers.Add(container_two, proportion=0, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=40)
        sizers.Add(container_three, proportion=0, flag=wx.ALIGN_CENTER|wx.TOP, border=10)
        panel.SetSizer(sizers)
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

   事件管理:

           事件:用户执行的动作,分为点击和松开

#事件绑定:
Button_login.Bind(wx.EVT_BUTTON,OnclickEventName)
    wx.EVT_BUTTON      事件类型选择了按钮类型
    OnclickEventName   点击按钮时执行的方法名

#例子:
import wx
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "登录界面", size=(300, 300))
        panel = wx.Panel(self)#创建一个画布,然后创建功能区并放到画布上
        self.title = wx.StaticText(panel,label = '登陆界面')
        self.username = wx.StaticText(panel,label = '用户:')
        self.user_name = wx.TextCtrl(panel,style = wx.TE_LEFT)
        self.userpassword = wx.StaticText(panel,label = '密码:')
        self.user_password = wx.TextCtrl(panel,style = wx.TE_PASSWORD)
        self.button_login = wx.Button(panel,label = '登陆')
        self.button_login.Bind(wx.EVT_BUTTON,self.OnclickEventname)
 ...和上一节一致,在这里省略....
    def OnclickEventname(self,event):
        ms = ''
        urnm = self.user_name.GetValue()
        pwd = self.user_password.GetValue()
        if urnm == '' or pwd == '':
            ms = '用户或密码不能为空'
        elif urnm == 'qy' and pwd == '123456':
            ms =  '登陆成功'
        else:
            ms = '用户或密码错误'
        wx.MessageBox(ms)
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

下拉菜单:

#
wx.ComboBox   文本框,选择框内容不固定的
wx.Choice     选择框内容固定的

select_one = wx.ComboBox(panel, -1, value='足球', choices=sports, style=wx.CB_SORT)
select_two = wx.Choice(panel, -1, choices=phones, style=wx.CB_SORT)

import wx
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "下拉列表", size=(300, 300))
        self.Centre()
        panel = wx.Panel(self)#创建一个容器
        box_one = wx.BoxSizer(wx.HORIZONTAL)
        text_one = wx.StaticText(panel,label='你喜欢的运动为:')
        sports = ['篮球','足球','排球']
        select_one = wx.ComboBox(panel,-1,value = '足球',choices = sports,style = wx.CB_SORT)
              box_one.Add(text_one,1,flag=wx.LEFT|wx.RIGHT|wx.FIXED_MINSIZE,border = 7)
        box_one.Add(select_one,1,flag = wx.ALL|wx.FIXED_MINSIZE)
        box_two = wx.BoxSizer(wx.HORIZONTAL)
        text_two = wx.StaticText(panel,label='你喜欢的手机品牌为:')
        phones = ['小米','华为','苹果']
        select_two = wx.Choice(panel,-1,choices = phones,style = wx.CB_SORT)
        box_two.Add(text_two,1,flag=wx.LEFT|wx.RIGHT|wx.FIXED_MINSIZE,border = 7)
        box_two.Add(select_two,1,flag = wx.ALL|wx.FIXED_MINSIZE)
        bbox = wx.BoxSizer(wx.VERTICAL)
        bbox.Add(box_one,1,flag = wx.ALL|wx.EXPAND,border = 7)
        bbox.Add(box_two, 1, flag=wx.ALL | wx.EXPAND, border=7)
        panel.SetSizer(bbox)
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

菜单:

menuBar = wx.MenuBar()                  创建一个菜单栏
fileMenu = wx.Menu()                    创建菜单
newItem = wx.MenuItem()                 创建菜单项
fileMenu.AppendItem(newItem)            添加菜单项到菜单中
menuBar.Append(fileMenu, title = "File")添加菜单到菜单栏
self.SetMenuBar(menuBar)                把菜单栏设置为界面的菜单栏
self.Bind(wx.EVT_MENT, self.menuHandler)绑定菜单事件

#例子:
import wx
class MyFrame(wx.Frame):
    def __init__(self):
        super().__init__(parent=None, title="wxPython", size=(400, 300))
        self.Center()
        self.text = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE)
        vbox = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(vbox)
        vbox.Add(self.text, 1, flag=wx.EXPAND | wx.ALL, border=1)
        menubar = wx.MenuBar()#对应步骤1
        self.SetMenuBar(menubar)
        file_menu = wx.Menu()#对应步骤2
        menubar.Append(file_menu, '菜单')#对应步骤4
        file_menu.Append(id=wx.ID_NEW, item='新建', helpString='new file')
        file_menu.AppendSeparator()
        edit_menu = wx.Menu()
        file_menu.AppendSubMenu(edit_menu, "编辑")
        copy_item = wx.MenuItem(edit_menu, 100, text="复制", kind=wx.ITEM_NORMAL)#对应步骤3
        edit_menu.Append(copy_item)
        cut_item = wx.MenuItem(edit_menu, 101, text="剪切", kind=wx.ITEM_NORMAL)
        edit_menu.Append(cut_item)
        paste_item = wx.MenuItem(edit_menu, 102, text="粘贴", kind=wx.ITEM_NORMAL)
        edit_menu.Append(paste_item)
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python学习笔记PDF是一种学习Python编程语言的资料形式,它包含了Python的基本语法、数据类型、流程控制、函数、模块、面向对象编程、异常处理等相关内容。以下是关于Python学习笔记PDF的详细内容说明: 1. 基本语法:Python学习笔记PDF中,首先介绍了Python的基本语法,例如如何定义变量、数据类型的使用(包括整数、浮点数、字符串、列表、元组、字典等),以及如何进行算术运算、比较运算和逻辑运算。 2. 流程控制:Python学习笔记PDF中,进一步介绍了流程控制的知识,包括条件判断和循环控制。条件判断主要是通过if语句进行判断执行不同的代码块,而循环控制则通过while循环和for循环来实现重复执行一段代码。 3. 函数:Python学习笔记PDF中,对函数的概念和使用进行了详细的解释。函数是代码的封装和组织方式,通过定义函数可以提高代码的重用性和可读性。学习者将了解到如何定义函数、调用函数、函数参数的传递以及函数返回值的使用。 4. 模块Python学习笔记PDF中,介绍了Python中的模块和包的概念。模块是一组函数、类或变量的集合,以.py文件的形式存在,可以被其他程序调用和使用学习者将学习如何导入模块使用模块中的函数和变量。 5. 面向对象编程:Python学习笔记PDF中,对面向对象编程进行了系统的讲解。面向对象编程是一种以对象为基本单位的编程思想,通过定义类和对象,可以更好地组织和管理代码。学习者将了解如何定义类、创建对象、封装、继承和多态的使用。 6. 异常处理:Python学习笔记PDF中,对异常处理进行了介绍。异常是程序在运行过程中出现的错误,通过捕获和处理异常,可以更好地控制程序的执行流程并提高程序的健壮性。学习者将了解到如何使用try-except语句来捕获和处理异常。 总之,Python学习笔记PDF是一份全面而详细的学习Python编程语言的资料,通过学习该资料,学习者将获得扎实的Python编程基础,并能够运用Python进行简单的程序开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序媛刘刘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值