知行编程网知行编程网  2022-08-31 17:30 知行编程网 隐藏边栏  32 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python怎样做界面的相关知识,包括python可以做界面开发吗,以及python 界面程序开发这些编程知识,希望对大家有参考作用。

python如何制作接口

作为一名 Python 开发人员,你迟早会遇到图形用户界面 (GUI) 应用程序开发任务。这时候就需要一些接口库来帮助我们快速搭建接口。 python中有很多接口库。下面是一些常用的接口。图书馆。


1.tkinter

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

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


2.pyqt

PyQt 是 Qt 库的 Python 版本。 PyQt3 支持 Qt1 到 Qt3。 PyQt4 支持 Qt4。它的第一个版本也是在 1998 年,但当时被称为 PyKDE,因为一开始 SIP 和 PyQt 并没有分开。 PyQt 是用 SIP 编写的。 PyQt 有 GPL 和商业版本。


3.wxpython

wxPython 是一套优秀的 Python 语言 GUI 图形库,它可以让 Python 程序员轻松创建具有完整功能键的完整 GUI 用户界面。 wxPython 作为优秀的跨平台 GUI 库 wxWidgets 的 Python 包装器和 Python 模块提供给用户。

与 Python 和 wxWidgets 一样,wxPython 也是一个开源软件,并且具有出色的跨平台能力,可以在 32 位窗口、大多数 Unix 或类 Unix 系统以及 Macintosh OS X 上运行。


4.Kivy

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


5.pygame

Pygame 是一个为视频游戏设计的跨平台 Python 模块,包括图形和声音。它建立在 SDL 之上,允许实时视频游戏开发,而不受机器语言和汇编语言等低级语言的限制。

这个库是用来写游戏的,但你也可以用它来写接口。

至于选择哪个库是个人喜好,强烈推荐Tkinter。下面就给大家介绍一下:

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

python如何制作接口

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

from tkinter import *
from tkinter.tix import Tk, Control, ComboBox  #升级的组合控件包
from tkinter.messagebox import showinfo, showwarning, showerror #各种类型的提示框

在进行界面绘制之前你需要初始化Tk()

root = Tk() # 初始化Tk()

root 是你布局的根节点,未来的布局都在上面

root.title("hello tkinter")    # 设置窗口标题
root.geometry("800x1000")    # 设置窗口大小 注意:是x 不是*
root.resizable(width=True, height=True) # 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True
root.tk.eval('package require Tix')  #引入升级包,这样才能使用升级的组合控件

设置一些窗口属性


1.Label

再来看看Label,它的属性很多

activebackground, activeforeground, anchor,
background, bitmap, borderwidth, cursor,
disabledforeground, font, foreground,
highlightbackground, highlightcolor,
highlightthickness, image, justify,
padx, pady, relief, takefocus, text,
textvariable, underline, wraplength
height, state, width

太多了,功能和名字基本一样,这里就不赘述了。你可以自己试试。我会谈谈常用的属性。

lable = Label(root, text="label", bg="pink",bd=10, font=("Arial",12), width=8, height=3)
lable.pack(side=LEFT)

python如何制作接口

最后,你需要调用 pack() 来布置控件。可以指定布局方式,可以定义的属性很多。

# Booleans
NO=FALSE=OFF=0
YES=TRUE=ON=1
 
# -anchor and -sticky
N='n'
S='s'
W='w'
E='e'
NW='nw'
SW='sw'
NE='ne'
SE='se'
NS='ns'
EW='ew'
NSEW='nsew'
CENTER='center'
 
# -fill
NONE='none'
X='x'
Y='y'
BOTH='both'
 
# -side
LEFT='left'
TOP='top'
RIGHT='right'
BOTTOM='bottom'
 
# -relief
RAISED='raised'
SUNKEN='sunken'
FLAT='flat'
RIDGE='ridge'
GROOVE='groove'
SOLID = 'solid'
 
# -orient
HORIZONTAL='horizontal'
VERTICAL='vertical'
 
# -tabs
NUMERIC='numeric'
 
# -wrap
CHAR='char'
WORD='word'
 
# -align
BASELINE='baseline'
 
# -bordermode
INSIDE='inside'
OUTSIDE='outside'
 
# Special tags, marks and insert positions
SEL='sel'
SEL_FIRST='sel.first'
SEL_LAST='sel.last'
END='end'
INSERT='insert'
CURRENT='current'
ANCHOR='anchor'
ALL='all' # e.g. Canvas.delete(ALL)
 
# Text widget and button states
NORMAL='normal'
DISABLED='disabled'
ACTIVE='active'
# Canvas state
HIDDEN='hidden'
 
# Menu item types
CASCADE='cascade'
CHECKBUTTON='checkbutton'
COMMAND='command'
RADIOBUTTON='radiobutton'
SEPARATOR='separator'
 
# Selection modes for list boxes
SINGLE='single'
BROWSE='browse'
MULTIPLE='multiple'
EXTENDED='extended'
 
# Activestyle for list boxes
# NONE='none' is also valid
DOTBOX='dotbox'
UNDERLINE='underline'
 
# Various canvas styles
PIESLICE='pieslice'
CHORD='chord'
ARC='arc'
FIRST='first'
LAST='last'
BUTT='butt'
PROJECTING='projecting'
ROUND='round'
BEVEL='bevel'
MITER='miter'
 
# Arguments to xview/yview
MOVETO='moveto'
SCROLL='scroll'
UNITS='units'
PAGES='pages'

写完这些,你运行程序,发现界面还是不能出现,那是因为你还少了一句话。

root.mainloop()

添加这句话,让程序进入消息循环,会显示界面

学习了label之后,学习其他控件就容易多了,因为很多属性都是一样的


2.Button

button=Button(root,text='QUIT',command=root.quit,activeforeground="black",activebackground='blue',bg='red',fg='white')
button.pack(fill=Y,expand=1)

前面提到的属性,如无特殊情况不再赘述。

python如何制作接口

python如何制作接口


3.Scale

def resize(ev=None):
    lable.config(font='Helvetica -%d bold'%scale.get())
scale=Scale(root,from_=10,to=40,orient=HORIZONTAL,command=resize)
scale.set(12)
scale.pack()

与按钮不同的是,命令不再是点击事件而是拖动事件,可以通过调用set()方法来设置当前位置。

python如何制作接口

python如何制作接口


4.NumbericUpDown

ct=Control(root,label='Number:',integer=True,max=12,min=2,value=2,step=2)
ct.label.config(font='Helvetica 14 bold')
ct.pack()

python如何制作接口

这是一个数字选择框,需要使用 config() 方法配置字体配置

python如何制作接口


5.ComboBox

cb=ComboBox(root,label='Type:',editable=True)
for animal in ('dog','cat','hamster','python'):
    cb.insert(END,animal)
cb.pack()

这是一个下拉选择框,标签前面要显示的词,editable控制是否可以更改

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

python如何制作接口


6.Menu

def click():
    print("点击了一次")
menubar=Menu(root)
root.config(menu=menubar)
filemenu=Menu(menubar,tearoff=0)
menubar.add_cascade(label='文件',menu=filemenu)
filemenu.add_command(label='新建...',command=click())
filemenu.add_command(label='打开...',command=click())
filemenu.add_command(label='保存',command=click())
filemenu.add_command(label='关闭填写',command=root.quit)

惨淡蓝需要所依附的节点配置menu才能起作用

调用add_cascade给menu添加一项选项

调用add_command则是给外层的选项添加一个子选项

python如何制作接口


7.Frame

frame1 =Frame(root)
frame1.pack(fill=X)
lable1=Label(frame1,text='你的花名:  ')
lable1.grid(row=1,column=0)

框架相当于一个局部窗体,可以用来加载其他控件

使用网格可以让你更容易掌握控件的位置。你可以指定它出现在多少行和多少列中,是否跨越行和列,跨越几行等等。

python如何制作接口


8.Radiobutton

frame2=Frame(root)
frame2.pack(fill=X)
lable2=Label(frame2,text='你的性别:  ')
lable2.grid(row=1,column=0)
sex=StringVar()
sex_male=Radiobutton(frame2,text='男',fg='blue',variable=sex,value='男')
sex_male.grid(row=1,column=2)
sex_female=Radiobutton(frame2,text='女',fg='red',variable=sex,value='女')
sex_female.grid(row=1,column=4)

这是一个单选框,里面的属性之前也说过

python如何制作接口


9.ListBox

frame4 =Frame(root)
frame4.pack(fill=X)
lable4=Label(frame4,text='4、请删除你不会的变成语言:  ')
lable4.grid(row=1,column=0)
listbox=Listbox(frame4)
listbox.grid(row=1,column=1)
for item in ["C","C++","JAVA","PYTHON","R","SQL","JS"]:
    listbox.insert(END,item)
DELETE=Button(frame4,text="删除",command=lambda listbox=listbox:listbox.delete(ANCHOR))
DELETE.grid(row=1,column=2)
language=Button(frame4,text="确定")
language.grid(row=2,column=1)

这是一个列表,请注意按钮单击事件是使用 lambda 表达式编写的。

python如何制作接口


10.Canvas

canvas = Canvas(window, width = 200, height = 100, bg = "White")
canvas.pack()

这是一个画板,你可以在上面画出各种形状,上面的例子:

from tkinter import *
 
class CanvasDemo:
    def __init__(self):
        window = Tk()
        window.title("CanvasDemo")
 
        self.canvas = Canvas(window, width = 200, height = 100, bg = "White")
        self.canvas.pack()
 
        frame = Frame(window)
        frame.pack()
 
        btRectangle = Button(frame, text = "长方形", command = self.displayRect)
        btOval = Button(frame, text="椭 圆", command=self.displayOval)
        btArc = Button(frame, text = "圆 弧", command = self.displayArc)
        btPolygon = Button(frame, text="多边形", command=self.displayPolygon)
        btLine = Button(frame, text=" 线 ", command=self.displayLine)
        btString = Button(frame, text="文 字", command=self.displayString)
        btClear = Button(frame, text="清 空", command=self.clearCanvas)
 
        btRectangle.grid(row = 1, column = 1)
        btOval.grid(row=1, column=2)
        btArc.grid(row=1, column=3)
        btPolygon.grid(row=1, column=4)
        btLine.grid(row=1, column=5)
        btString.grid(row=1, column=6)
        btClear.grid(row=1, column=7)
 
        window.mainloop()
 
    def displayRect(self):
        self.canvas.create_rectangle(10, 10, 190, 90, tags = "rect")
    def displayOval(self):
        self.canvas.create_oval(10, 10, 190, 90, tags = "oval", fill = "red")
    def displayArc(self):
        self.canvas.create_arc(10, 10, 190, 90, start = -90, extent = 90, width = 5, 
        fill = "red", tags = "arc")
    def displayPolygon(self):
        self.canvas.create_polygon(10, 10, 190, 90, 30, 50, tags = "polygon")
    def displayLine(self):
        self.canvas.create_line(10, 10, 190, 90, fill = 'red', tags = "line")
        self.canvas.create_line(10, 90, 190, 10, width = 9, arrow = "last", activefill = "blue", 
        tags = "line")
    def displayString(self):
        self.canvas.create_text(60, 40, text = "Hi,i am a string",font = "Tine 10 bold underline",
        tags = "string")
    def clearCanvas(self):
        self.canvas.delete("rect", "oval", "arc", "polygon", "line", "string")
 
CanvasDemo()

python如何制作接口


11.CheckButton

frame8=Frame(root)
frame8.pack()
agree=StringVar()
agree=Checkbutton(frame8,text='我同意',variable=agree,onvalue='确定',offvalue="不确定",)
agree.grid()

这是一个多选框,oncalue表示勾选时的值,offvalue表示不勾选时的值。

python如何制作接口


12.LabelFrame

frame10=Frame(root)
frame10.pack()
group=LabelFrame(frame10,text='特别鸣谢',padx=5,pady=5)
group.grid()
w=Label(group,text='容器框')
w.pack()

这是个容器框,padx,pady分别控制在x,y方向上的外边距。

python如何制作接口

python学习网,免费的在线学习
,欢迎关注!

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享