iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >教你用Python写界面
  • 539
分享到

教你用Python写界面

教你用界面Python 2023-01-31 05:01:50 539人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

好代码本身就是最好的文档。当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释 作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多

好代码本身就是最好的文档。当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释

作为Pyhon开发者,你迟早都会碰到图形用户界面(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版本。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位windows、绝大多数的Unix或类Unix系统、Macintosh OS X上。

4.Kivy

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

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

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

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

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

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

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


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')  #引入升级包,这样才能使用升级的组合控件

设置一些窗口属性

再来看看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)

 

 

第一个 要依附的节点
text 上面显示的字
bg 背景颜色  也可以传rgb16进制的形式
bd 边框宽度
font 字体 第一个是字体样式 第二个是字体大小
width  height 宽 高
bitmap 图像
highlightcolor 高亮时字体颜色
highlightbackground 高亮时背景颜色
textvariable 绑定的变量 之后如果变量值发生变动 字也会随之改变
wraplength 换行控制 如果是50就表示宽度到50就换行显示

最后你需要调用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之后学其他控件也就简单了很多,因为很多属性都是相同的


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

之前说过的属性如果没有特殊情况就不再说了

command 点击调用的方法
activeforeground 点击时按钮上字的颜色
activebackground 点击时按钮的背景颜色

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()

和button不同的是command不再是点击事件了而是拖动事件 ,调用set()方法可以设置当前位置

from_ 滑动条起始值
to 滑动条终点值
origent 样式 两种样式 一横一竖

ct=Control(root,label='Number:',integer=True,max=12,min=2,value=2,step=2)
ct.label.config(font='Helvetica 14 bold')
ct.pack()
integer 是否为整数
max 最大值
min 最小值
value 初始值
step 步长

这是一个数字选择框 其中的字体配置需要使用config()方法来进行配置


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

这是一个下拉选择框,label前面要显示的字,editable控制是否可更改

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


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则是给外层的选项添加一个子选项


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

frame相当于一个局部的窗体,可以用来装载其它控件

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


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)

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


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表达式写的


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()


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

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


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方向上的外边距

差不多这些控件已经够用了,我这还有几个小例子供你练习

--结束END--

本文标题: 教你用Python写界面

本文链接: https://www.lsjlt.com/news/188986.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 教你用Python写界面
    好代码本身就是最好的文档。当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释 作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多...
    99+
    2023-01-31
    教你用 界面 Python
  • 教你用一行Python代码实现GUI图形界面
    目录一、选择文件夹二、选择文件三、选择日期四、输入文本五、弹窗无按钮六、弹窗无标题七、弹窗只有OK按钮八、弹窗只有Error按钮(红色)九、显示通知窗口十、弹窗选择十一、自定义弹窗实...
    99+
    2023-01-03
    Python GUI图形界面 Python 图形界面
  • 教你如何用一行Python代码实现GUI图形界面
    目录1、选择文件夹2、选择文件3、选择日期4、输入文本5、弹窗无按钮6、弹窗无标题7、弹窗只有OK按钮8、弹窗只有Error按钮(红色)9、显示通知窗口10、弹窗选择11、自定义弹窗...
    99+
    2024-04-02
  • 亲手教你用Python打造一款摸鱼倒计时界面
    前言 前段时间在微博看到一段摸鱼人的倒计时模板,感觉还挺有趣的。 于是我用了一小时的时间写了个页面出来 摸鱼办地址 (当然是摸鱼的时间啦)。 模板是这样的: 摸鱼办公室  你好,摸...
    99+
    2024-04-02
  • 教你使用Android制作一个引导界面
    本篇文章为大家展示了教你使用Android制作一个引导界面,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。开发的界面(三张图片,滑到最后一个会出现开始体验的Button,下面的小红点会跟着一起滑动):...
    99+
    2023-05-31
    android roi
  • python图形界面教程(tkinter)
    1、图形化界面设计的基本理解 当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI),即通过鼠标对菜单、按钮等图形化元素触发指令,并从标签、对话框等图型化显示容器中获取人机对话信息。 P...
    99+
    2023-09-13
    python
  • 用python编写用户登录界面,用python编写登录程序
    大家好,小编为大家解答用python编写用户登录界面的问题。很多人还不知道用python编写登录程序,现在让我们一起来看看吧! 1、想用python编写一个脚本,登录网页,在网页里做一系列操作,应该怎样实现 python编写一个脚本的腊...
    99+
    2023-09-30
    网络
  • python使用tkinter与messagebox写界面和弹窗
    目录1、grid 布局2、Button 按钮3、使用:4、无限循环的小弹窗:1、grid 布局 说明: 参数说明:     sticky:在插件正常尺寸下,分配单...
    99+
    2024-04-02
  • Python QT5设计UI界面教程
    简介:PyQT5开发常用知识,零基础上手,需配合我之前写的博文,配置好QT设计工具和ui文件转py文件的工具。博文为:使用Python PyQt5实现一个简单的图像识别软件;页面效果如下: 设计菜单栏 Containers——>Ta...
    99+
    2023-09-14
    ui python qt
  • 教你自己做xp精美登录界面
        一、在你的电脑里找到logonui.exe文件,通常位于c:Windowssystem32目录中,复制两份,一份作为备份,一份用来编辑。   二、用ResHacker打开logonu...
    99+
    2023-05-23
    界面 登录 精美 自己 可以 XP 我们
  • 教你用python实现一个无界面的小型图书管理系统
    目录一、需求了解二、环境准备三、代码实现一、需求了解 功能模块 图书信息 二、环境准备 安装mysql数据库 参考文章: MySQL数据库压缩版本安装与配置 MySQL msi版...
    99+
    2024-04-02
  • Python如何编写可视化界面
    小编给大家分享一下Python如何编写可视化界面,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、前言PyQt的版本需要与Python的版本保持一致,在这里我用的...
    99+
    2023-06-15
  • python怎么编写数据库界面
    在Python中,可以使用各种库来编写数据库界面,其中最常用的库之一是Tkinter。以下是使用Tkinter编写一个简单的数据库界...
    99+
    2023-08-09
    python 数据库
  • 一分钟教你用Python写一幅春联
    目录1. 前言2. 代码中需要导入的模块3. 下载字模4. 下载龙凤呈祥背景底图5. 生成春联6. 测试样例总结1. 前言 春联是中国传统文化中最具内涵的元素之一,它以对仗工整、简洁...
    99+
    2024-04-02
  • 教你使用Python写一个简单的JSONParser
    目录引言JSON TokenizerJSON Parser引言 最近在学习 Python 的正则表达式内容,我看的是官方的文档,在文档的最后有一个例子,勾起了我的兴趣。它是用正则表达...
    99+
    2023-05-14
    Python JSONParser 简单 JSONParser
  • python图形界面教程Tkinter详解
    目录1、Tkinter是什么2、Tkinter创建窗口①导入 tkinter的库 ,创建并显示窗口②修改窗口属性③创建按钮④窗口内的组件布局3、Tkinter布局用法①基本界面、la...
    99+
    2022-12-19
    python tkinter详解教程 python tkinter布局 Tkinter教程
  • c#怎么写界面
    使用 c# 编写用户界面:创建一个 windows 窗体应用程序项目。使用窗体设计器设计用户界面并添加控件。为控件编写事件处理程序以响应用户交互。处理用户输入,例如文本框中的文本或按钮单...
    99+
    2024-05-11
    c#
  • 手把手教你写--FTP(基于python)
    ftp需求分析1. 多用户同时登陆(客户端合法性验证)2. 用户登陆,加密认证--(hamc or md5)3. 注册功能4. 上传/下载文件,保证文件一致性5. 不同用户家目录不同,且只能访问自己的家目录6. 对用户进行磁盘配额、不同用户...
    99+
    2023-01-30
    手把手教你 FTP python
  • python界面
    1 import easygui as g 2 import sys 3  4 while 1: 5         g.msgbox("我一定要学会编程!","加油!") 6         #choices = ['愿意', '不愿意'...
    99+
    2023-01-31
    界面 python
  • 手把手教你写一个uniapp通用页面组件
    目录前言需求开发初始化页面数据实现状态栏与底部配置页面使用总结前言 做移动端项目时为了兼容各种手机型号的界面,最好有一个统一的页面组件对样式做统一处理,例如:判断是否显示状态栏,是否...
    99+
    2022-12-15
    uniapp 组件开发 uniapp组件使用 uniapp通用页面组件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作