current position:Home>Python Learning Chapter 5 Graphical Interface Design

Python Learning Chapter 5 Graphical Interface Design

2022-11-08 07:24:531 meter 8 in the dream


第一章 函数、模块、包
第二章 数据类型
第三章 控制结构
第四章 面向对象设计

1 常用的 Python GUI 库

1.1 Tkinter

Tkinter 模块(TK接口),是 python 的标准 TK GUI 工具包接口.可以在Unix,Windows,Macintosh系统下使用
内置到Python的安装包中,只要安装好python,就能import Tkinter库,而且IDLE也是用Tkinter编写而成的

1.2 wxPython

wxPython,是一款开源软件,允许PythonProgrammers easily create complete 、功能健全的GUI用户界面

1.3 创建GUI程序

1、导入 Tkinter 模块
2、创建控件
3、指定这个控件的 master, 即这个控件属于哪一个
4、告诉 GM(geometry manager) 有一个控件产生了.

2 创建Windows窗口

import tkinter     #导入tkinter模块
win = tkinter.Tk()      #创建windows窗口对象
win.title("我的第一个GUI程序")         #设置窗口标题
win.geometry("400x200+200+10")  
#设置窗口大小,宽x高,x为小写英文字母,+200Indicates the distance from the left side of the window to the left side of the screen,-xIndicates the distance from the right side of the form to the right side of the screen
win.minsize(200,100)      
#minsize(w,h),The minimum size at which the form can be stretched
win.maxsize(800,600)
win.mainloop()          #进入消息循环,即显示窗口

在这里插入图片描述

3 几何布局管理器

Tkinter几何布局管理器(Geometry Manager)用于组织和管理父组件(往往是窗口)How the Neutron component is laid out.Tkinter提供了3Different styles of geometry and layout management classes

3.1 pack——包装

采用way to organize components,packLayouts place subcomponents in a quickly generated interface based on the order in which they were created.

调用子组件的方法pack(),则该子组件在其父组件中采用pack布局:

pack (option=value,…)

import tkinter
root=tkinter.Tk()
root.geometry("400x200+200+10")  
label=tkinter.Label(root,text='hello,python')
label.pack()	#将LabelThe component is added to the window display
button1=tkinter.Button(root,text='BUTTON1')	#Create text yes'BUTTON1'的Button组件
button1.pack(side=tkinter.LEFT)		#将button1The component is added to the window display,左停靠
button2=tkinter.Button(root,text='BUTTON2')	  #Create text yes'BUTTON2'的Button组件
button2.pack(side=tkinter.RIGHT)	#将button2The component is added to the window display,右停靠
root.mainloop()

在这里插入图片描述

3.2 grid——网格

采用表格结构组织组件,Subcomponent positions are determined by row/列确定的单元格决定,子组件可以跨越多行/列.在每一列中,列宽由这一列中最宽的单元格确定.

调用子组件的grid()方法,则该子组件在其父组件中采用gridBureau and Layout:

grid (option=value,…)

gridThe geometry layout manager has two important parameters,row和column,Used to specify where to place child components,如果不指定row,will place subcomponents on 1on available lines,如果不指定column,则使用第0列.

from tkinter import *
root = Tk()
root.geometry('200x200+280+280')
root.title('计算器示例')

#grid(网格)布局
L1=Button(root,text='1',width=5,bg='yellow')
L2=Button(root,text='2',width=5)
L3=Button(root,text='3',width=5)
L4=Button(root,text='4',width=5)
L5=Button(root,text='5',width=5,bg='green')
L6=Button(root,text='6',width=5)
L7=Button(root,text='7',width=5)
L8=Button(root,text='8',width=5)
L9=Button(root,text='9',width=5,bg='yellow')
L0=Button(root,text='0',width=5)
Lp=Button(root,text='.',width=5)

L1.grid(row=0,column=0)
L2.grid(row=0,column=1)
L3.grid(row=0,column=2)
L4.grid(row=1,column=0)
L5.grid(row=1,column=1)
L6.grid(row=1,column=2)
L7.grid(row=2,column=0)
L8.grid(row=2,column=1)
L9.grid(row=2,column=2)
L0.grid(row=3,column=0,columnspan=2,sticky=E+W)
Lp.grid(row=3,column=2,sticky=E+W)
root.mainloop()

在这里插入图片描述

3.3 place——位置

Allows specifying the size and position of the component,The advantage is that the position of the components can be precisely controlled,The downside is that the child component cannot flexibly change its size when the window is resized

调用子组件的方法place(),则该子组件在其父组件中采用place布局:

place (option=value,…)

注意
Python的坐标系,左上角为原点(0,0),向右是xThe positive direction of the coordinates,向下是yThe positive direction of the coordinates.

from tkinter import *
root=Tk()
root.title("登录")
root['width']=200;root['height']=80
Label(root,text='用户名',width=6).place(x=1,y=1)
Entry(root,width=15).place(x=55,y=1)
Label(root,text='密码',width=6).place(x=1,y=20)
Entry(root,width=15,show='*').place(x=55,y=20)
Button(root,text='登录',width=8).place(x=40,y=40)
Button(root,text='取消',width=8).place(x=110,y=40)
root.mainloop()

在这里插入图片描述

4 Tkinter组件

控件描述
Button按钮控件;在程序中显示按钮.
Canvas画布控件;显示图形元素如线条或文本
Checkbutton多选框控件;用于在程序中提供多项选择框
Entry输入控件;用于显示简单的文本内容
Frame框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Label标签控件;可以显示文本和位图
Listbox列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton菜单按钮控件,用于显示菜单项.
Menu菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message消息控件;用来显示多行文本,与label比较类似
Radiobutton单选按钮控件;显示一个单选的按钮状态
Scale范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar滚动条控件,当内容超过可视化区域时使用,如列表框..
Text文本控件;用于显示多行文本
Toplevel容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox输入控件;与Entry类似,但是可以指定输入范围值
PanedWindow PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件.
LabelFrame labelframe是一个简单的容器控件.常用与复杂的窗口布局.
tkMessageBox用于显示你应用程序的消息框.

4.1 标签组件 Label

Used to display text or bitmaps in a window

语法格式:

w = Label ( master, option, … )

from tkinter import *
win = Tk()
win.title("我的窗口")
lab1 = Label(win,text='你好',anchor='nw')   #Position vertically on top,水平居左
lab1.pack()     #显示Label组件

lab2 = Label(win,bitmap='question')
lab2.pack()     #显示Label组件

bm = PhotoImage(file = r"D:\postgraduate\study\py\book\aa.png")
lab3=Label(win,image=bm)
lab3.bm=bm
lab3.pack()     #显示Label组件

win.mainloop()      #显示窗口

在这里插入图片描述

4.2 按钮组件 Button

用于在 Python 应用程序中添加按钮,按钮上可以放上文本或图像,按钮可用于监听用户行为,能够与一个 Python 函数关联,当按钮被按下时,自动调用该函数.

语法格式:

w = Button ( master, option=value, … )

import tkinter
import tkinter.messagebox as msg
 
top = tkinter.Tk()
 
def helloCallBack():
   msg.showinfo( "Hello Python", "你好")
 
B =Button (top, text ="点我", command = helloCallBack)
 
B.pack()
top.mainloop()

在这里插入图片描述
在这里插入图片描述

4.3 单行文本框 Entry

Mainly used for entering single-line content and displaying text,可以方便地向程序传递用户参数

语法格式

Entry对象 = Entry(Windows窗口对象)
#创建Entry对象

Entry对象.pack()
#显示Entry对象

获取Entry组件的内容:

get()方法用于获取单行文本框内输入的内容

设置或获取EntryComponent content can also be usedStringVar()对象来完成,把Entry的textvariable属性设置为StringVar()变量,再通过StringVar()变量的get()和set()The function reads and outputs the corresponding text content

copyright notice
author[1 meter 8 in the dream],Please bring the original link to reprint, thank you.
https://en.pythonmana.com/2022/312/202211080718078707.html

Random recommended