图形用户界面

  1. GUI用户界面一般包含Label、Button、ListBox、Text、Menu和Scrollbar等一些标准的界面组件,实现用户交互和程序输出。常用的GUI有Tkinter、PyQt、wxPython等。
  2. sudo apt install +包名
  3. Tk的调用形式:Tk(screenName=None,baseName=None,className=‘Tk’,useTk=1,sync=0,use=None)用于创建一个Tkinter顶层窗口,一般作为Tkinter应用程序的主窗口。Tk从Misc类与Wm类派生,前者是Tkinter中widgets的基础类,后者用于窗口管理。所有参数都是默认参数。
  4. 设置标题:title(string=None),Tk继承自Wm的一个对象方法,用于设置窗口标题。参数表示标题的字符串,默认值是None。
  5. 设置窗体大小:geometry(newGeometry=None),参数newGeometry接收一个类似于’widthxheight±x±y’的字符串。其中"width"表示窗体宽度,"height"表示窗体高度,小写字母"x"用于连接width与height。“±x"表示窗体距离屏幕左右边界的像素值,”+“表示窗体左边和屏幕左边的距离;”-"表示窗体右边和屏幕右边的距离。“±y"表示窗体距离屏幕上下边界的像素值,”+“表示窗体上边和屏幕上边的距离;”-"表示窗体下边和屏幕下边的距离。
  6. 启动事件循环:mainloop(n=0)
  7. 构建一个标准的GUI应用程序主要分成3个步骤或模块:
    a. 构建顶层窗体;
    b. 窗体布局,设置大小、标题等属性,添加其他组件等;
    c. 启动事件循环,处理各种GUI事件或操作指令。
  8. Label组件:Label(master=None,cnf={},**kw)用来创建一个Label控件,并将其放置在容器中。Label继承于widget,是一种widget组件。master表示该控件放置的容器的对象,默认值是None;cnf是该控件的选项或属性值设置,是字典类型,默认是空字典;kw是关键字型可变参数,可以对控件的选项或属性值进行设置。cnf与kw参数功能相同,前者通过字典的形式传递参数,后者通过关键字的形式传递参数;目前保留cnf的功能是为了向后兼容。Label可以设置的选项或属性有text(文本内容)、background(背景)、foreground(背景)、font(字体)、width(宽)和height(高)等。调用形式:pack(cnf={},**kw)
  9. Button组件:又称按钮控件。Button(master=None,cnf={},**kw);pack(cnf={},**kw)
  10. Checkbutton组件:又称为多选框控件。Checkbutton(master=None,cnf={},**kw);pack(cnf={},**kw);IntVar(master=None,value=None,name=None)
  11. Radiobutton组件:又称为单选按钮控件。Radiobutton(master=None,cnf={},**kw);pack(cnf={},**kw)
  12. LabelFrame组件:是在窗体上显示的一个带标题的边界框,可以把相关的一些控件放置到一组中,方便管理。LabelFrame(master=None,cnf={},**kw)
  13. Entry组件:用于输入和显示一行简单文本。
    Entry(master=None,cnf={},**kw)创建一个Entry控件
    delete(first,last=None)在Entry中删除从first到last(不包含)的文本
    insert(index,string)在Entry中的index位置插入string。
    grid(cnf={},**kw)按照Grid布局管理的方法,用于在父容器中放置Entry。
  14. Listbox组件:是一个列表框组件,用来显示一个字符串构成的列表,用户可以选择列表中的一项或多项。
    Listbox(master=None,cnf={},**kw)从XView类与YView类中派生。
    delete(first,last=None)在Listbox中删除从first到last(不包括)的字符串项。
    insert()在Listbox中的index位置插入elements。
  15. Scrollbar组件:是一个滚动条控件,当控件内容不超过可视化区域时,可以滚动显示,可以用于Listbox。Text等进行滚动显示。
    Scrollbar(master=None,cnf={},**kw)包含一个可以移动的滑动块。
    set(*args)设置0~1的分数值表示滚动条上滑动块的位置。
    config(cnf=None,**kw)设置Scrollbar的属性。
  16. Scale组件:是一个范围控件,显示一个数值刻度,为输入限定范围的数字区间。
    Scale(master=None,cnf={},**kw)会显示一个数值刻度,以及沿着数值刻度线移动的滑块,滑块的位置表示用户选择的数值。
    get(*args)获取滑块当前所在位置的对应数值。
  17. Text组件:用来显示和输入多行文本。
    Text(master=None,cnf={},**kw)从XView、YView类派生,支持内容的滚动显示。
    delete(index1,index2=None)在Text中删除从index1到index2(不包含)的文本。
    insert(index,chars,*args)在Text中的index位置前插入字符串chars,字符串附件与样式相关的标签由args参数给出。
  18. Canvas组件:又称发画布组件,能显示图形元素和文本,提供绘图功能,如绘制直线、椭圆、多边形和矩阵。
    Canvas(master=None,cnf={},**kw)从XView、YView类派生,支持滚动条。
    create_line(*args,**kw)在Canvas中绘制折线,args提供形如x1,y1,…,xn,yn的坐标值;kw提供线宽、线的颜色等属性。
    create_rectangle(*args,**kw)在Canvas中绘制矩形,args提供矩形的左上角、右下角坐标x1,y1,x2,y2;kw提供线宽、线的颜色等属性。
    create_text(*args,**kw)在Canvas中输出文本,args提供输出文本的位置x1,y1;kw给出文本的相关信息,如文本内容等。
  19. Menu组件:又称菜单控件,用来在窗体上显示菜单栏、下拉菜单和弹出菜单。
    Menu(master=None,cnf={},**kw)
    add_cascade(cnf={},**kw)添加分级的菜单项,即添加子菜单。通过cnf或kw,提供label(显示内容)、Menu(菜单对象)等参数。
    add_command(cnf={},**kw)添加命令型的菜单项,即添加命令菜单。通过cnf或kw,提供label(显示内容)和command(菜单命令处理函数)等参数。
  20. Menubutton组件:又称为菜单按钮控件,常用来显示下拉菜单和弹出菜单。
    Menubutton(master=None,cnf={},**kw)
  21. OptionMenu组件:从菜单按钮控件类派生的子类,运行后显示一个下拉列表,允许用户选择一个菜单项对应的值。
    OptionMenu(master,variable,value,*values,**kwargs)
  22. Message组件:又称为消息控件,用来显示多行文本,一般不可编辑。当宽度不够时会自动换行;也能用“\n”强制换行。
    Message(master=None,cnf={},**kw)
  23. Spinbox组件:用来输入,可以限定输入范围,可用于从有限个数的有序值中间选择输入。
    Spinbox(master=None,cnf={},**kw)从XView类派生,支持水平方向的内容滚动显示。
    insert(index,s)在Spinbox中的index位置插入string。
  24. PanedWindow组件:是布局管理插件,可以作为容器,放置一个或多个子控件。可以通过拖动分割线来改变子控件的大小。
    PanedWindow(master=None,cnf={},**kw)
  25. Toplevel组件:是一个顶层窗口;既可以独立显示,拥有标题、边界等,又是一个独立窗口,可以作为容器,放置其他GUI组件。
    Toplevel(master=None,cnf={},**kw)直接从BasicWidget类派生,也继承了类Wm,具有窗口管理功能。
    title(string=None)用于设置窗口标题。
    geometry(newGeometry=None)
  26. 在Tkinter中,使用bind()方法进行事件绑定。
    bind(sequence=None,func=None,add=None)将GUI组件的事件sequence与回调函数func()绑定。GUI组件触发事件sequence时,系统会自动调用func()函数,同时将sequence事件对应的Event对象作为参数传入func()函数中。
  27. 在Tkinter中,绑定事件时,通常使用字符串来描述事件:
    鼠标事件:
    :表示鼠标左键按下。、和<1>表达相同的意思。
    :按住鼠标左键移动,即拖动;如果省略B1,表示鼠标移动。
    :鼠标左键双击。
    :鼠标左键弹起。
    1表示左键,2表示中键,3表示右键。
    键盘事件:
    :用户按了键盘上的Enter键。
    :用户按了键盘上的任意键。具体的键值会传给回调函数的event参数中的char成员。
    窗体事件:
    :鼠标指针移动到窗体或控件之上。
    :鼠标指针离开窗体或控件。
    :窗体或控件发生了改变,如大小、位置等。
  28. Event对象:
    widget:表示产生事件的Tkinter控件。
    x,y:表示产生事件时的鼠标位置。
    x_root,y_root:表示产生事件时鼠标相对于屏幕左上角的位置。
    char:表示产生事件时的字符代码(仅对鼠标事件有效)。
    keysym:表示产生事件时键的符号的符号(仅对键盘事件有效)。
    num:表示产生事件时的鼠标对应的数字(仅对鼠标事件有效)。
    width,height:表示产生事件时的窗体或控件的大小(仅对Configure事件有效)。
    type:表示产生事件时的事件类型。
  29. 在Tkinter中提供了3种方式对控件进行布局管理,分别对应Pack、Grid和Place 3个类,在每个类中分别对应实现了pack()、grid()、place()方法。
    pack(cnf={},**kw)
    anchor:在容器中放置控件的位置,默认是CENTER,可以设置为N、S、E、W中的一个或两个。
    expand:布尔型变量,设置控件是否扩展填充容器中除控件外的额外空间,默认False。
    Fill:默认是NONE,设置控件是否充满容器,X表示横向充满,Y表示纵向充满,BOTH表示两个方向。
    side:默认是TOP,设置控件在容器中从哪边开始放置,如果要横向布局,可以设置LETH。另外,还可以设置BOTTOM与RIGHT。
    grid布局:又称网络布局,一般要提供两个参数,分别是行和列,对应表格的网格单元。
    grid(cnf={},**kw)
    column:数字,从0开始,表示网格单元在第几列。
    columnspan:数字,表明控件跨几列。
    row:数字,从0开始,表明控件跨几行。
    rowspan:数字,表示控件跨几行。
    sticky:在网格大于控件时,如何放置控件,可以取代表方向S、N、E、W中的一个或两个。
  30. place布局:使用place方式布局,要精确给定每个控件的位置信息,并且在不同的分辨率下,界面会有较大的差异。
    place(cnf={},**kw)
    anchor:在容器中放置控件的位置,默认是NW,可以设置为CENTER,N、S、E、W中的一个或两个。
    x:容器中放置控件的x坐标。
    y:容器中放置控件的y坐标。
    relx:容器中放置控件的x相对坐标,相对于width,等于1表示在最右边。
    rely:容器中放置控件的y相对坐标,相对于height,等于1表示在最下边。
    width:容器中放置控件的高度。
    relwidth:容器中放置控件的相对于容器的宽度,界于0~1。
    relheight:容器中放置控件的相对于容器的高度,界于0~1。
  31. messagebox消息对话框:
    askquestion(title=None,message=None,**options)弹出一个对话框,提示一行信息,显示“yes”“no”两个按钮供用户选择,并返回选择结果。
  32. filedialog文件对话框:用于文件读写时弹出对话框,供用户浏览目录,选择文件或路径。
    asksaveasfilename(**options)会弹出一个文件打开对话框,提供本地存储浏览,供用户浏览目录,选择文件;成功选择文件后,返回文件的路径。
  33. colorchooser颜色选择对话框:主要打开系统调色板,供用户根据RGB分量直观地选择一种颜色。
    askcolor(color=None,**options)弹出一个系统调色板,供用户直观地选择RGB颜色;成功选择后,返回RGB形式的颜色值。

参考书籍:《Python 3.x基础教程》

上一篇:电流计算和快速估算方法


下一篇:python之变量前加*或者**