广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python之图形界面
  • 142
分享到

python之图形界面

图形界面python 2023-01-31 07:01:24 142人浏览 薄情痞子

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

摘要

12.1 丰富的平台在编写python GUI程序前,需要决定使用哪个GUI平台。wxPython----跨平台pythonGUI工具包确保所选择的二进制版本要对应python的版本,例如,针对python2.3进行编译的wxpython并

12.1 丰富的平台

在编写python GUI程序前,需要决定使用哪个GUI平台。wxPython----跨平台pythonGUI工具

确保所选择的二进制版本要对应python的版本,例如,针对python2.3进行编译的wxpython并不能用于python2.4.


12.3.1 开始

开始需要wx模块:

import wx


编写wxPython程序的方法很多,但不可避免的事情是创建应用程序对象。基本的应用程序类叫做ex.App,它负责幕后所有的初始化。最简单的wxPython程序应该像下面这样:

import wx

app = wx.App

app.MainLoop()


如果wx.App无法工作,可能需要将它替换为wx.PySimpleApp


12.3.2 窗口和组件

窗口也称为框架,它只是wx.Frame类的实例。wx框架中的部件都是由它们的父部件作为构造函数的第一个参数的第一个参数创建的。如果正在创建一个单独的窗口,就不需要考虑父部件,使用None即可,如代码清单12-1所示。而且在调用app.MainLoop前需要调用窗口的Show方法-----否则它会一直隐藏。


创建并且显示一个框架

import wx

app = wx.App()

win = wx.Frame(None)

win.Show()

app.MainLoop()


在框架上增加按钮也很简单----只要使用win作为父参数实例化wx.Button即可

在框架上增加按钮

import wx

app = wx.App()

win = wx.Frame(None)

btn = wx.Button(win)

win.show()

app.MainLoop()


12.3.3 标签、标题和位置

可以在创建部件的时候使用构造函数的label参数设定它们的标签。同样,也可以用title参数设定框架的标题。

使用关键字参数增加标签和标题

import wx

app = wx.App()

win = wx.Frame(None,title="Simple Editor")

loadButton = wx.Button(win,label='Open')

saveButton = wx.Button(win.label='Save')

win.Show()

app.MainLoop()


注意一下按钮的布局就能将隐藏的按钮显示。一个很基础的方法是使用pos和size参数在构造函数内设置位置和尺寸。


设置按钮位置

import wx

app = wx.App()

win = wx.Frame(None,title="Simple Editor",size=(410,335))

win.Show()

loadButton = wx.Button(win,label='Open',pos=(315,5),size=(80,25))

saveButton = wx.Button(win,label='Save',pos=(315,5),size=(80,25))

filename = wx.TextCtrl(win,pos=(5,5),size=(210,25))

contents = wx.TextCtrl(win,pos=(5,35),size=(390,260),style=wx.TE_MULTILINE | wx.HSCROLL)

app.MainLoop()


位置和尺寸都包括一对数值:位置包括x和y坐标,而尺寸包括宽和高。

创建了两个文本控件,每个都使用了自定义风格。默认的文本控件式文本框,就是一行可编辑的文本,没有滚动条,为了创建文本区只要使用style参数调整风格即可。style参数的值实际上是个整数。但不用直接指定,可以使用按位或运算符OR联合wx模块中具有特殊名字的风格来指定。本例中,我联合了wx.TE_MULTINE来获取多行文本区以及wx.HSCROLL来获取水平滚动条。


12.3.4 更智能的布局

让组件随窗口中的组件也会调整大小和位置。

使用尺寸器

import wx

app = wx.App()

win = wx.Frame(None,title="Simple Editor",size=(410,335))

bkg = wx.Panel(win)

loadButton = wx.Button(bkg,label='Open')

saveButton = wx.Button(bkg,label='Save')

filename = wx.TextCtrl(bkg)

contents = wx.TextCtrl(bkg,style=wx.TE_MULTILINE | wx.HSCROLL)

hbox = wx.BoxSizer()

hbox.Add(filename,proportion=1,flag=wx.EXPAND)

vbox.Add(loadButton,proportion=0,flag=wx.LEFT,border=5)

hbox.Add(saveButton,proportion=0,flag=wx.LEFT,border=5)

vbox = wx.BoxSizer(wx.VERTICAL)

vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5)

vbox.Add(contenxs,proportion=1,flag=wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT,border=5)

bkg.SetSizer(vbox)

win.Show()

app.MainLoop()


这段代码的运行结果和前例相同,但是使用了相对坐标而不是绝对坐标。

wx.BoxSizer的构造函数带有一个决定它是水平还是垂直的参数(wx.HORIZONTAL或者wx.VERTICAL),默认为水平。Add方法有几个参数,proportion参数根据在窗口改变大小时所分配的空间设置比例。例如,水平的BoxSizer中,filename组件的改变大小时获取了全部的额外空间。如果这3个部件都把proportion设为1,那么都会获得相等的空间。可以将proportion设定为任何数。

flag参数类似构造函数中的style参数,可以使用按位或运算符连接构造符号常量对其进行构造。wx.EXPAND标记确保组件会扩展到所分配的空间中。而wx.LEFT,wx.RIGHT,wx.TOP,wx.BOTTOM和wx.ALL标记决定边框参数应用于哪个边,边框参数用于设置边缘宽度。



12.3.5 事件处理

在GUI术语中,用户执行的动作叫做事件。你需要让程序注意这些事件并且作为反应。可以将函数绑定到所涉及的事件可能发生的组件上达到这个效果。当事件发生时,函数会被调用。利用部件的Bind方法可以将事件处理函数链接到给定的事件上。

假设写了一个负责打开文件的函数,并将其命名为load。然后就可以像下面这样将该函数作为loadButton的事件处理函数:

loadButton.Bind(wx.EVT_BUTTON,load)

我把函数链接到了按钮---点击按钮的时候,函数被调用。名为wx.EVT_BUTTON的符号常量表示一个按钮事件。wx框架对于各种事件都有这样的事件常量----从鼠标动作到键盘按键。


12.3.6 完成了的程序

现在需要两个事件处理函数:load和save。当事件处理函数被调用时,它会收到一个事件对象作为它唯一的参数,其中包括发生了什么事情的信息,但是在这里可以忽略这方面的事情,因为程序只关心点击时发生的事情。

def load(event):

file = open(filename.GetValue())

contents.SetValue(file.read())

file.close()

def save(event):

file = open(filename.GetValue(),'w')

file.write(contents.GetValue())

file.close()


最终的GUI程序

import wx

def load(event):

file = open(filename.GetValue())

contents.SetValue(file.read())

file.close()

def save(event):

file = open(filename.GetValue(),'w')

file.write(contents.GetValue())

file.close()

app = wx.App()

win = wx.Frame(None,title="Simple Editor",size=(410,335))

bkg = wx.Panel(win)

loadButton = wx.Button(bkg,label='Open')

loadButton.Bind(wx.EVT_BUTTON,load)


saveButton = wx.Button(bkg,label='Save')

saveButton.Bind(wx.EVT_BUTTON,save)


filename = wx.TextCtrl(bkg)

contents = wx.TextCtrl(bkg,style=wx.TE_MULTILINE | wx.HSCROLL)

hbox = wx.BoxSizer()

hbox.Add(filename,proportion=1,flag=wx.EXPAND)

vbox.Add(loadButton,proportion=0,flag=wx.LEFT,border=5)

hbox.Add(saveButton,proportion=0,flag=wx.LEFT,border=5)


vbox = wx.BoxSizer(wx.VERTICAL)

vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5)

vbox.Add(contenxs,proportion=1,flag=wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT,border=5)

bkg.SetSizer(vbox)

win.Show()

app.MainLoop()


可以按照下面的步骤使用这个编辑器。

1.运行程序。应该看到一个和刚才差不多的窗口

2.在文本区里面打些字

3.在文本框内键入文件名。确保文件不存在,否则它会被覆盖。

4.点击save按钮

5.关闭编辑器窗口

6.重启程序

7.在文本框内键入同样的文件名

8.点击open按钮。文件的文本内容应该会在大文本区内重现。

9.随便编辑一下文件,再次保存。



12.4 但是我宁愿用。。。

python的GUI工具包实在太多,所以我没法将所有工具包都展示给你看。不过我可以给出一些流行的GUI包中的例子。

import wx

def hello(event):

print "Hello,world!"

app = wx.App()


win = wx.Frame(None,title="Hello,wxPython!",size=(200,100))

button = wx.Button(win,label="Hello")

button = Bind(wx.EVT_BUTTON,hello)

win.Show()

app.MainLoop()


12.4.1 使用Tkinter


Tkinter是个老牌的Python GUI程序。它由Tk GUI工具包包装而来。

from Tkinter import *

def hello(): print 'Hello,world'

win = Tk()

win.title('Hello,Tkinter!')

win.geometry('200*100')

btn = Button(win,text='Hello ',command=hello)

btn.pack(expand=YES,fill=BOTH)

mainloop()


12.4.2 使用jython和Swing

如果正在使用jython,类似wxPython和Tkinter这样的包就不能用了。唯一可用的GUI工具包是java标准库包AWT和Swing。

下面是使用jython和Swing实现的GUI示例

from javax.Swing import *

import sys

def hello(event): print 'Hello,world!'

btn = JButton('Hello')

btn.actionPerfORMed = hello

win = JFrame('Hello,Swing!')

win.contenPane.add(btn)

def closeHandler(event): sys.exit()

win.windowClosing = closeHandler

btn.size = win.size = 200,100

win.show()


这里增加了一个额外的事件处理函数,因为关闭按钮在java Swing中没有任何有用的默认行为。另外,无须显式地进入主事件循环,因为它是和程序并运行的。


--结束END--

本文标题: python之图形界面

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

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

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

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

下载Word文档
猜你喜欢
  • python之图形界面
    12.1 丰富的平台在编写python GUI程序前,需要决定使用哪个GUI平台。wxpython----跨平台pythonGUI工具包确保所选择的二进制版本要对应python的版本,例如,针对python2.3进行编译的wxpython并...
    99+
    2023-01-31
    图形界面 python
  • Python基础之tkinter图形化界面学习
    一、基础内容 import tkinter as tk from PIL import Image,ImageTk def my(): pwin.destroy() win.de...
    99+
    2022-06-02
    Python tkinter学习 Python图形化界面学习
  • Python 图形化界面 ——QtDes
    本案例旨在用QtDesigner与Python结合实现图像化界面,GUI。 其中包含数据预处理模块、特征提取模块、模型建立模块,以及最后的图形化展示模块等等。 话不多说,直接上图。 这个GUI可以作为大多数模式识别的可视化界面。简单的...
    99+
    2023-01-31
    图形化 界面 Python
  • python学习——图形界面
    Python支持多种图形界面的第三方库,包括: Tk wxWidgets Qt GTK 等等。 但是Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用。本章简单介绍如何使用T...
    99+
    2023-01-31
    图形界面 python
  • python图形界面教程(tkinter)
    1、图形化界面设计的基本理解 当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI),即通过鼠标对菜单、按钮等图形化元素触发指令,并从标签、对话框等图型化显示容器中获取人机对话信息。 P...
    99+
    2023-09-13
    python
  • Python GUI 图形用户界面
    目录GUI介绍简单操作tkinter组件介绍向窗体中添加按钮控件使用文本框控件使用菜单控件使用标签控件使用单选按钮和复选按钮组件使用绘图组件GUI介绍 图形用户界面(Graphica...
    99+
    2022-11-11
  • Python学习开发之图形用户界面详解
    目录1. 丰富的图形开发界面库1.1 tkinter2 wxPython 概述2.1 安装 wxPython3 Jython3.1 Jython 安装3.2 在 Eclipese 中配置 Jython4. 结语1. 丰富的图形开发界面库图形...
    99+
    2022-06-02
    python 图形用户界面 python图形化界面 python图形用户界面编程
  • Linux字符界面切与图形界面之间的切换
    1.Linux常用的运行模式 在进行字符界面,图形界面切换讲解之前,先看一看Linux常用的运行模式 运行模式说明rescue.target单用户字符界面模式,只有root用户可以登录系统multi-user.targ...
    99+
    2023-09-28
    linux 服务器 运维 startx init 5
  • Java图形界面之JFrame,JLabel,JButton详解
    目录一、JFrame二、JLabel三、JButton四、小结一、JFrame package Demo03; import javax.swing.*; import jav...
    99+
    2022-11-12
  • java图形界面之加法计算器
    JAVA用于开发图形界面应用的 SWING 组件包功能强大,使用方便。接下来我们就使用其写一个简单的图形界面小程序:加法计算器。 第一步: 首先得构思,我们要做什么。加法计算器的话,...
    99+
    2022-11-13
  • Python小技之不用 Gui,照样实现图形界面
    如果说程序员有什么怕的,那我想可能就是 —— 需求又变了!这不,客户在笔者开发完一个基于浏览器的 Web 应用程序之后说:程序需要在内(无)部(网)环境中运行……这就意味着无法安装 Python 环境!谁叫咱是程序员呢,不就开发一个 GUI...
    99+
    2023-05-14
    Python 界面 GUI
  • python美化图形化界面设计,pythontkinter界面美化
    大家好,本文将围绕python美化图形化界面设计展开说明,pythontkinter界面美化是一个很多人都想弄明白的事情,想搞清楚python美化输出模块需要先了解以下几个事情。 1、python如何做界面 PyQt,一个基于Qt的Py...
    99+
    2023-10-09
    小发猫
  • python图形界面教程Tkinter详解
    目录1、Tkinter是什么2、Tkinter创建窗口①导入 tkinter的库 ,创建并显示窗口②修改窗口属性③创建按钮④窗口内的组件布局3、Tkinter布局用法①基本界面、la...
    99+
    2022-12-19
    python tkinter详解教程 python tkinter布局 Tkinter教程
  • python的图形用户界面介绍
    目录python的图形用户界面msgbox的使用ccbox的使用buttonbox的使用buttonbox添加图片choicebox的使用multchoicebox的使用总结pyth...
    99+
    2022-11-12
  • centOs7安装图形界面
       学习Linux一个礼拜了,安装了vm虚拟机,也调试了一些命令,今天才发现, 原来centOs7居然没有图形页面,看着这黑窗口挺烦恼的,于是我就打破这种僵局。在网上搜索了一些方法,以下是具体的操作:  1.输入:yum list ,测...
    99+
    2023-09-18
    linux 运维 服务器
  • Python四款GUI图形界面库介绍
    目录一、Python官方标准库:Tkinter (必须了解)用法:二、三方库:PyQt5(推荐,但是还是累)1、安装:2、QtDesigner3、配置PyCharm4、使用PyQt三...
    99+
    2022-11-11
  • python图形界面tkinter的使用技巧
    目录 一、python图形界面tk之滚动文本框的实现示例二、python图形界面tk之控件随窗口自变化的实现示例三、python图形界面tk之顶部菜单栏实现示例四、pyth...
    99+
    2022-11-11
  • Python PyQt5-图形界面的美化操作
    前言 今天就来学习一下图形设计界面的美化,首先我们知道 QtDesigner设计出来的界面默认是不太怎么美观的。所以在以后的实际开发中很多界面都是要美化的。那么现在来看看具体怎么美化...
    99+
    2022-11-11
  • Python+Tkinter制作专属图形化界面
    目录介绍tkinter的简单应用显示窗口设置窗口大小调整窗口位置(使用的是同一个方法)设置窗口的标题添加标签控件,并定位添加输入框,并定位调整控件的摆放位置添加点击按钮点击按钮自定义...
    99+
    2022-11-13
  • python简单图形界面GUI入门——e
    感觉gui做起来成就感比较高,学完基础语言顺便花一个下午看看GUI设计,现在回顾来看这个如果做正式的展示太过简单,easygui只是小演示之用。     首先是easygui包下载,两种方式: 1)在python环境下,用pip3 in...
    99+
    2023-01-31
    图形界面 入门 简单
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作