用python写一个图形界面!

Python 专栏收录该内容
81 篇文章 0 订阅

作为Pyhan开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多,我认识的并不多,这里只列出几种我认识的

1.tkinter

Tkinter(也叫Tk接口)是Tk图形用户界面工具包标准的Python接口.TK是一个轻量级的跨平台图形用户界面(GUI)开发工具Tk和Tkinter可以运行在大多数的Unix平台、Windows、和Macintosh系统.

Tkinter由一定数量的模块组成.Tkinter位于一个名为_tkinter(较早的版本名为tkinter)的二进制模块中.Tkinter包含了对Tk的低级接口模块,低级接口并不会被应用级程序员直接使用,通常是一个共享库(或DLL),但是在一些情况下它也被Python解释器静态链接。

2.pyqt

PyQt是Qt库的Python版本。PyQt 3支持QT1到QT3.PyQt 4支持Qt 4.它的首次发布也是在1998年,但是当时它叫PyKDE,因为开始的时候SIP和PyQt没有分开.PYQt是用SIP写的.PYQt提供GPL版和商业版.

3.wxpython

wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的、功能键全的GUI用户界面。wxPython是作为优秀的跨平台GUI库wxWidget的Python封装和Python模块的方式提供给用户的。

就如同Python和wxWidget一样,wxPython也是一款开源软件,并且具有非常优秀的跨平台能力,能够运行在32位windows、绝大多数的或类Unix或类Unix系统、Macintosh OS X上。

4.Kivy

这是一个非常有趣的项目,基于OpenGL ES 2,支持Android和iOS平台的原生多点触摸,作为事件驱动的框架,Kivy非常适合游戏开发,非常适合处理从Widget到动画的任务。如果你想开发跨平台的图形应用,或者仅仅是需要一个强大的跨平台图形用户开发框架,Kivy都是不错的选择.
5.pygame

是跨平台Python模块,专为电子游戏设计,包含图像、声音。建立在sdl基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚.

这个库使用来写游戏的,但是你也可以用来写界面,嘿嘿

那选择什么库是个人的喜好,但是我推荐尽可能去选择一种通过且学习资料比较多的吧,我这里选择的是Tkinter,项目要求比较急,没怎么挑就选了.

我学习也不是很深,如果你想要进行更深的学习请前往tkinter官方文档

先来看看Tkinter里面的基础控件

接下来的代码讲解中你需要导入这些

从Tkinter进口*
从tkinter.tix导入TK,Control,ComboBox#升级的组合控件包
从tkinter.messagebox导入显示信息、显示警告、显示错误#各种类型的提示框
在进行界面绘制之前你需要初始化TK()

根=tk()#初始化TK()
根便是你布局的根节点了,以后的布局都在它之上

root.title(“hello tkinter”)#设置窗口标题
几何学(“800x1000”)#设置窗口大小注意:是x不是*
可调整大小(宽度=真,高度=真)#设置窗口是否可以变化长/宽,false不可变,True可变,默认为True
引入升级包,这样才能使用升级的组合控件(‘Package Required Tix’)#
设置一些窗口属性

1.Label
再来看看标签,它的属性很多

活动背景,活动前景,锚,
背景,位图,边框宽度,光标,
去掉前景,字体,前景,
荧光背景,荧光颜色,
高光厚度,图像,证明,
PADX,PADY,浮雕,Takeefocus,Text,
文本,下划线,包装
高度、状态、宽度
太多了,作用基本和名字一样,这里就不一一说了,你可以自己去试试,我说一下常用的属性

lable=标签(根,文本=“标签”,BG=“粉红色”,BD=10,字体=(“Arial”,12),宽度=8,高度=3)
LABLE.Pack(侧=左)

第一个要依附的节点
文本上面显示的字
BG背景颜色也可以传rgb 16进制的形式
BD边框宽度
字体字体第一个是字体样式第二个是字体大小
宽度高度宽高
位图图像
荧光彩色高亮时字体颜色
荧光背景高亮时背景颜色
文本化绑定的变量之后如果变量值发生变动字也会随之改变
包装换行控制如果是50就表示宽度到50就换行显示
最后你需要调用Pack()来把控件布置上去,你可以指定布局方式,可定义的属性也非常多

#布尔人
NO=false=off=0
是=真=on=1

#-锚固-粘稠
n=‘n’
S=‘s’
W=‘w’
E=‘e’
NW=‘NW’
SW=‘SW’
n=‘ne’
Se=‘se’
NS=‘ns’
EW=‘ew’
nsew=‘nsew’
中心=‘中心’

#-填充
无=‘无’
X=‘x’
Y=‘y’
两者=“两者”

#侧
左=‘左’
顶=‘顶’
右=‘右’
底部=“底部”

#-救济
升=‘升’
沉没=“沉没”
平=“平”
岭=‘岭’
凹槽=“凹槽”
固体=‘固体’

#-定向
水平=“水平”
垂直=“垂直”

#-标签
数值=‘数值’

#-包装
Char=‘char’
单词=‘Word’

#-对齐
基线=“基线”

#-边界模式
内=‘内’
外部=“外部”

#特殊标记、标记和插入位置
sel=“sel”
sel_first=‘sel.first’
SEL_LEST=‘sel.Late’
结束=‘结束’
插入=‘插入’
当前=“当前”
锚=‘锚’
All=‘All’#例如Canvas.删除(ALL)

#文本小部件和按钮状态
正常=正常
残疾人=“残疾人”
Active=‘Active’
#画布状态
隐藏=‘隐藏’

#菜单项类型
级联=‘级联’
CHECKBUTTON=“校验按钮”
命令=‘命令’
RADIOBUTTON=“放射按钮”
分离器=“分离器”

#列表框的选择模式
单=“单”
浏览=‘浏览’
Multiple=‘Multiple’
扩展=‘扩展’

#列表框的Activestyle
#None=‘None’也是有效的
Dotbox=“Dotbox”
下划线=‘下划线’

#各种画布样式
PIESLICE=“Pieslice”
和弦
弧=‘弧’
First=‘First’
最后=‘最后’
屁股=‘屁股’
突出=‘突出’
圆=‘圆’
斜面=斜面
指格=“人”

xview/yview#参数
动议=‘动议’
滚动=‘滚动’
单位=“单位”
Pages=“Pages”
写完这些你运行程序发现还是无法出现界面,那是因为你还少了一句

root.mainloop()
加上这句话使程序进入消息循环,界面便会显示出来

学完了标签之后学其他控件也就简单了很多,因为很多属性都是相同的

2.Button
按钮=按钮(根,文本=‘退出’,命令=root.it,active前台=“Black”,active后台=‘Blue’,bg=‘red’,fg=‘White’)
addon.pack(填充=Y,展开=1)
之前说过的属性如果没有特殊情况就不再说了

命令点击调用的方法
活动前景点击时按钮上字的颜色
活动背景点击时按钮的背景颜色

3.Scale
DEF调整大小(EV=无):
lable.config(字体=‘Helvetica-%d粗体’%Scale.get())
比例尺=刻度(根,从_=10,到=40,方位=水平,命令=调整大小)
标度集(12)
Scale.pack()
和按钮不同的是命令不再是点击事件了而是拖动事件,调用set()方法可以设置当前位置

从滑动条起始值
到滑动条终点值
原样式两种样式一横一竖

4.NumbericUpDown
CT=控制(根,标签数:‘,整数=真,max=12,min=2,值=2,步骤=2)
ct.label.config(字体=‘Helvetica 14粗体’)
ct.pack()
整数是否为整数
MAX最大值
最小最小值
值初始值
步骤步长
这是一个数字选择框其中的字体配置需要使用config()方法来进行配置

5.ComboBox
CB=ComboBox(根,标签=‘Type:’,可编辑=True)
动物在(“狗”,“猫”,“仓鼠”,“蟒蛇”):
参见插入(结束,动物)
参见:Pack()
这是一个下拉选择框,标签前面要显示的字,可编辑控制是否可更改

调用INSERT()给下拉选择框添加选项

6.Menu
def click():
打印(“点击了一次”)
菜单(根)
root.config(菜单=menubar)
filemenu=菜单(menubar,tearoff=0)
Add_级联(标签=‘文件’,菜单=filemenu)
filemenu.add_Command(标签=‘新建.’,命令=Click())
filemenu.add_Command(标签=‘打开.’,命令=Click())
filemenu.add_Command(标签=‘保存’,命令=Click())
filemenu.add_Command(标签=‘关闭填写’,命令=root.it)
惨淡蓝需要所依附的节点配置菜单才能起作用

调用添加级联给菜单添加一项选项

带哦用Add_则是给外层的选项添加一个子选项命令

7.Frame
Frame 1=框架(根)
框架1.pack(Fill=X)
lable 1=Label(Frame 1,text=‘您的花名:’)
标记1.网格(行=1,列=0)
帧相当于一个局部的窗体,可以用来装载其它控件

使用网格能让你更容易把握控件的位置,你可以指定它出现在几行几列,是否跨行跨列,跨几行等等

8.Radiobutton
Frame 2=框架(根)
框架2.pack(Fill=X)
lable 2=Label(Frame 2,text=‘您的性别:’)
Lable2.Grid(行=1,列=0)
性别=StringVar()
男_MARY=Radiotton(框2,文本=‘男’,fg=‘Blue’,变量=性别,value=‘男’)
网格(行=1,列=2)
性别_女性=无线电按钮(框2,文本=‘女’,fg=‘red’,变量=性别,值=‘女’)
网格(行=1,列=4)
这是一个单选框,里面的属性之前也说过

9.ListBox
框架4=帧(根)
框架4.pack(Fill=X)
Lable 4=Label(Frame 4,text=‘4、请删除您不会的变成语言:’)
标记4.网格(行=1,列=0)
listbox=Listbox(框架4)
网格(行=1,列=1)
对于[“C”、“C++”、“Java”、“Python”、“R”、“SQL”、“JS”中的项目:
插入(结束,项目)
DELETE=Button(框架4,Text=“删除”,命令=lambdalistbox=listbox:listbox.delete(锚))
DELETE.Grid(行=1,列=2)
Language=Button(framework 4,text=“确定”)
网格(行=2,列=1)
这是一个列表,注意这里按钮点击事件的写法是用lambda表达式写的

10.Canvas
画布=帆布(窗口,宽度=200,高度=100,BG=“白色”)
canvas.pack()
这是一个画板,你可以在上面画各种形状,上例子:

从Tkinter进口*

CanvasDemo班:
DEF_(自):
窗口=TK()
window.title(“CanvasDemo”)

Self.画布=画布(窗口,宽度=200,高度=100,BG=“白色”)
Sel.canvas.pack()

框架=框架(窗口)
Fra.pack()

btRect角度=Button(框架,Text=“长方形”,命令=Sel.displayRect)
btOval=Button(框架,文本=“椭圆”,命令=Sel.displayOval)
btARC=Button(框架,Text=“圆弧”,命令=Sel.displayARC)
btPolygon=Button(框架,Text=“多边形”,命令=Sel.displayPolygon)
btline=Button(框架,Text=“线”,命令=Sel.DisplayLine)
btString=Button(框架,Text=“文字”,命令=Sel.displayString)
btClear=Button(框架,Text=“清空”,命令=Sel.ClearCanvas)

网格(行=1,列=1)
btOval.Grid(行=1,列=2)
btArc.网格(行=1,列=3)
btPolygon.Grid(行=1,列=4)
网格(行=1,列=5)
btString.Grid(行=1,列=6)
网格(行=1,列=7)

window.mainloop()

DEF DisplayRect(Self):
create_矩形(10,10,190,90,tag=“rect”)
DEF DisplayOval(Self):
create_oval(10,10,190,90,tag=“Oval”,Fill=“red”)
DEF显示弧(Self):
创建弧(10,10,190,90,开始=-90,范围=90,宽度=5,填充=“红色”,标记=“弧形”)
DEF显示多边形(Self):
创建多边形(10,10,190,90,30,50,标记=“多边形”)
DEF显示线(Self):
create_line(10,10,190,90,Fill=‘red’,tag=“line”)
create_line(10,90,190,10,宽度=9,箭头=“最后”,activefill=“Blue”,tag=“line”)
DEF DisplayString(Self):

DEF ClearCanvas(Self):
删除(“rect”、“oval”、“圆弧”、“多边形”、“line”、“string”)

CanvasDemo()

11.CheckButton
框架8=帧(根)
Fra8.pack()
同意=StringVar()
同意=检查按钮(框8,文本=‘我同意’,变量=同意,onvalue=‘确定’,offvalue=“不确定”,)
rele.Grid()
这是一个多选框,oncalue代表被勾选时的值,offvalue代表不被勾选时的值

12.LabelFrame
框架10=帧(根)
Fra10.pack()
组=LabelFrame(framework 10,text=‘特别鸣谢’,padx=5,pda=5)
Group.Grid()
W=标签(组,文本=‘容器框’)
W.pack()
这是个容器框,PADX,PADY分别控制在x,y方向上的外边距

如果还有问题未能得到解决,搜索887934385交流群,进入后下载资源工具安装包等。最后,感谢观看!

  • 5
    点赞
  • 0
    评论
  • 18
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:黑客帝国 设计师:我叫白小胖 返回首页

打赏作者

十一月的萧邦。

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值