PythonGUI设计第一章

我的看法
        第一次打算学习GUI是在大一的时候,首此接触python在,得知Python可以做GUI图像设计的时候,就打算好好研究一番,因为那是我以为图像设计学好了,就可以深入做图像处理,但是,接触之后,我还是不是很明白GUI设计到底是用来做啥的,知道现在我也不是很清楚。
什么是GUI
        GUI全称"Graphical User Interface",中文为图形用户接口。早期人与计算机之间的沟通是文字形式的沟通,例如:早期的DOS的操作系统,windows的提示命令窗口,Linus系统,等等。
python开发工具包tkinter
        tkinter作为python进行GUI设计的内建开发,是一个开放原码的图形用户设计接口开发工具,原来是用TCL编写GUI函数库,最初发展是从1991年开始,具有跨平台的特性,可以在Linus,Windows,Mac OS等操作系统上很好的运行。目前这个开发工具包提供了许多图形用户接口,如,标签(Label)、菜单(Menu)、按钮(Button)等。
基本窗口属性

  • title():设置窗口的标题
  • geometry(widthxheright +x+y):设置窗口宽高,单位是像素,并设置窗口位置
  • maxsize(width,height):拖拽时设置窗口的最大宽高
  • minsize(width,height):拖拽时设置窗口的最小宽高
  • configure(bg=“color”):设置窗口背景颜色
  • resizable(True,Trus):可设置是否可更改窗口大小,第一个是宽,第二个是高,默认参数是False.
  • state(“zoomed”):最大化窗口
  • iconify():最小化窗口
  • iconbimap:更改窗口默认图标

建议一个窗口

from tkinter import *
root = Tk()
root.title("MyWindow")
root.geometry("300x160")
root.configure(bg='yellow')
root.mainloop()

执行结果
PythonGUI设计第一章_第1张图片
认识常用窗口widget(控件)

  • Button:按钮

  • Canvas:画布

  • Checkbutton:多选按钮

  • Entry:文本框

  • Frame:框架

  • Label:标签

  • LabeiFrame:标签框架

  • Listbox:列表框

  • Menu:菜单

  • Mmenubutton:菜单按钮

  • Message:消息

  • OptionMenu:下拉式菜单

  • PanedWindow:面板

  • Radiobutton:单选按钮

  • Scale:尺度

  • Scrollbox:滚动条

  • Spinbox:可微调输入控件

  • Toplevel:上层窗口
    控件的共同属性

  • Dimensions:大小

  • Colors:颜色

  • Font:字形

  • Anchor:锚(位置参考点)

  • Relief styles:属性边框

  • Bitmaps:显示位图

  • Cursors:鼠标外形
    控件的共同方法

  • Configuration
    1.config(option=value):控件属性可以在建立时设置,也可以在程序执行时使用config()重新设置
    2.cget(“option”):取得option参数值
    3.keys():可以用在方法获取所有该控件的参数

  • Event Process
    1.mainloop():让程序继续执行,同时进入等待与处理窗口事件
    2.quit():Python Shell窗口结束,但是所建立的窗口继续执行
    3.update():更新窗口画面

  • Event callbacks
    1.bind(event,callback):事件绑定
    2.unbind(event):解除绑定

  • Alarm handles
    after(time,callback):间隔指定时间后调用callback()方法
    标签Label的基本应用
            Label()方法可以用于在窗口内建立文字或图像标签
    属性Color
            fg可以设置前景色彩;bg可以用于设置背景色彩
    如:

from tkinter import *
root = Tk()
root.title("mytkinter")
label = Label(root,text="I love Python!",fg="red",bg="yellow")
label.pack()#包装与定位组件
root.mainloop()

执行结果:
在这里插入图片描述
这里设置前景色彩(即文字)颜色为红色,设置背景颜色为黄色,注意这里的背景颜色仅仅是Label标签的背景颜色
属性Dimensions
        height可以设置控件的高度,width可以设置控件的宽度,单位都是字符宽度。
如:

from tkinter import *
root = Tk()
root.title("mytkinter")
label = Label(root,text="I love Python!",fg="red",bg="yellow",width=15,height=5)
label.pack()#包装与定位组件
root.mainloop()

执行结果:
PythonGUI设计第一章_第2张图片
这里设置Label标签的宽度为15个字符宽度,设施高度为5个字符高度
属性Anchor
        anchor实际设置的是标签文字标签区域输出位置的设置,在默认情况下是上下和左右都居中对齐的,其参数有"nw",“n”,“w”,“ne”,“e”,“se”,“s”,"sw"和默认的"center"这些分别代码东西南北方位单词英文首写字母
如:

from tkinter import *
root = Tk()
root.title("mytkinter")
label = Label(root,text="I love Python!",fg="red",bg="yellow",width=15,height=5,anchor="nw")
label.pack()#包装与定位组件
root.mainloop()

执行结果:
PythonGUI设计第一章_第3张图片
这里设置文字内容在标签的西北方(即左上方)
属性Font
        font用于设置文字字形。

  1. 字形:family:如Helvetical、Times等
  2. 自号:size:单位是像素
  3. weight:如bold、normal
  4. 下划线underline
  5. overstrick
    如:
from tkinter import *
root = Tk()
root.title("mytkinter")
label = Label(root,text="I love Python!",fg="red",bg="yellow",width=15,height=5,anchor="nw",font="Helvetic 18 bold")
label.pack()#包装与定位组件
root.mainloop()

执行结果:
PythonGUI设计第一章_第4张图片
属性Justify
        在标签输出中,如果是多行的输出,在最后一行输出时,可以使用justify参数设置所输出的标签内容是left/center/right。默认是居中。
如:

from tkinter import *
root = Tk()
root.title("mytkinter")
label = Label(root,text="I love Python!",fg="red",bg="yellow",width=15,height=5,anchor="nw",font="Helvetic 18 bold",justify="left",wraplength=180)
label.pack()#包装与定位组件
root.mainloop()

执行结果:
PythonGUI设计第一章_第5张图片
其中wraplength用来指示每一行文字最大宽度
属性Bitmaps
        为标签位置提供内建位图功能
如:

from tkinter import *
root = Tk()
root.title("mytkinter")
label = Label(root,bitmap="hourglass",bg="yellow",fg="red",compound="center")
label.pack()#包装与定位组件
print(type(label))#传回Label参数类型
root.mainloop()

执行结果·:
在这里插入图片描述
参数cpmpound
        图片与文字共存时,可以使用此参数来定义文字与图像的位置关系。

  • left:图像在左
  • right:图像在右
  • top:图像在上
  • bottom:图像在下
  • center:文字覆盖在图像上方
    如:
from tkinter import *
root = Tk()
root.title("mytkinter")
label = Label(root,bitmap="hourglass",bg="yellow",fg="red",text="I love Python!",compound="center")
label.pack()#包装与定位组件
print(type(label))#传回Label参数类型
root.mainloop()

执行结果:
在这里插入图片描述
这里设置文字覆盖在图像上方
属性Relief
        用来设置控件的边框
属性padx/pady
        设置标签文字与标签区间的间距
如:

from tkinter import *
root = Tk()
root.title("mytkinter")
label = Label(root,text="I love Python!",fg="red",bg="yellow",width=15,height=5,padx=5,pady=10,anchor="nw",font="Helvetic 18 bold",justify="left",wraplength=180)
label.pack()#包装与定位组件
root.mainloop()

执行结果:
PythonGUI设计第一章_第6张图片
属性Cursor
        该属性用来设置当鼠标滑过某一指定区域的时候,鼠标箭头显示的样式。
如:
执行结果:

from tkinter import *
from tkinter.ttk import Separator
root = Tk()
root.title("ch2_7")

my_title = "微光女神"
my_para = "微光女神有很多歌曲,只要是所有用尽情感去表达自己的歌曲,都会带人走进他们内心世界,感悟自己的故事"
label1 = Label(root,text=my_title,font="Helvetic 40 bold",bg="yellow",fg="blue",cursor="heart")
label1.pack(padx=20,pady=20)
sep = Separator(root,orient=HORIZONTAL)
sep.pack(fill=X,pady=10)
label2 = Label(root,text=my_para,font="Helvetic 10 normal",bg="lightyellow",fg="lightblue")
label2.pack(padx=20,pady=20)
root.mainloop()

PythonGUI设计第一章_第7张图片
注:自己鼠标滑过上方文字的时候鼠标样式为爱心,由于电脑截图原因,未显示该图标。
属性Separator
        在GUI设置中适当使用分割线来分隔可以使界面效果更佳友好,如参数为:HORIZONTAL,则表示建立水平分隔线,参数为:VERTICAL则建立垂直分隔线。
案列如上一个。

————下一章GUI窗口控件配置————

你可能感兴趣的:(pythonGUI)