【Python】 用户图形界面GUI wxpython I 基本用法和组件

时间:2022-10-21 16:55:48

wxpython - 基本用法和组件

  wxpython是python对跨平台GUI库wxWidgets的封装。wxWidgets是由C++写成的。

  wxpython被包装进了wx模块中,用它设计GUI很方便,但是必须要做的就是先建立一个应用的对象:

app = wx.App()
#与这个app相关的一些控件、框架等的操作,一定要在MainLoop调用前处理完
app.MainLoop()

  为了书写方便,下面所有代码和文本中都默认了是from wx import *了,这样不用每个类前面再加上wx.了。。。

  *听说是由于沿用了C++的习惯,所有wx中的方法和函数都是每个单词的首字母大写

  ■  一些wx的类方法

    wx.DisplaySize()  返回的是屏幕大小,如在窗口创建时指定size是这个的话创建出来的窗口就是最大化的

  ■  窗口组件

  ●  窗口(Frame)类

  所有控件都应该放到一个窗口里去展现,这个窗口类就是Frame类。他可以创建一个窗口并且右上角自带最小化、最大化和关闭三个键。

  其构造方法是 Frame(self, Window parent, int id=-1, String title=EmptyStrin,Point pos=DefaultPosition, Size size=DefaultSize,long style=DEFAULT_FRAME_STYLE, String name=FrameNameStr)z

  各个参数的意思是:

    parent  一个父对象,窗口的父对象只能是窗口。父对象的意思是当前对象和其关联起来,当父对象被关闭或者删除的话,当前对象也跟着一起不见了

、    id  指定一个id来在真个wx中标识当前对象。一般来说不用特别指定,可以写默认值-1,意思是让python自动分配一个id给他就好了。当事件发生时,python会根据这个id号来定位发生事件的元素

     //以上两个参数在所有控件类的构造方法里都有,且意思也都一样。要记住喔

     title  传个字符串,让窗口上面显示这个title

    pos  传个元组,表示窗口被创建时出现在屏幕上的位置的坐标。左上角为原点

    size  元组,表示窗口被创建时大小,可以

    style  窗口的一些界面风格

    name  给这个窗口起一个wx内部的名字,可以引用

  Frame类有一些类方法:

    Show()  显示窗口

    Hide()  隐藏窗口  //这两个基本所有控件都有

    Iconize()  最小化窗口

    Close()  关闭窗口

    SetMinSize(tuple)  设置窗口可调节的最小大小

    SetMaxSize(tuple)  设置窗口可调节的最大大小

    Center()  自动将窗口居屏幕正中显示,这样就可以不用设置构造方法里的pos属性了

  一般而言,不会直接调用Frame类来做文章,常见的最佳实践是把需要的控件,事件处理方法等等封装进一个自己定义的Frame类的子类。那么这样一个子类其实抽象的就是一个个性化的窗口,比如:

class MyFrame(Frame):

    def __init__(self):
Frame.__init__(self,None,-1,title="test",pos=(100,100),size=(200,200))
'''
布局上的一些个性化添加和操作
''' def someEventHandler(self,event):
'''
定义一些事件处理函数用于给控件Bind
'''
pass if __name__ == "__main__":
app = App() #创建应用的对象
myframe = MyFrame() #创建一个自定义出来的窗口
myframe.Show() #这两句一定要在MainLoop开始之前就执行
app.MainLoop()

  ■  面板组件 Panel

  通常Panel是添加在Frame类上, panel = Panel(Frame,-1)

  可以运用Panel来盛放其他组件,以实现对组件的分组管理。更加方便

  在panel上,可以用SetBackgroundColour(...)来设置改变背景色,SetForegroundColour(...)设置前景颜色。

  需要注意的一点是,Panel是有Size的。与窗口关联的Panel,其大小默认为窗口的大小且具有EXPAND属性,根据窗口大小改变而调整自身大小。而其他的Panel的默认大小是构造方法中的参数指定 or 由最后加进来多少组件决定。所以仅仅把某个没和窗口关联的Panel中的某个组件设置成EXPAND,而Panel本身不设置成EXPAND的话是没有用的,因为窗口大小变化时,Panel本身大小不变。

  ■  静态文本 StaticText

  构造方法:StaticText(parent,id,label,size,pos,style)

  label就是要写的字,可以用SetLabelText(...)设置文字,GetLabelText()来获取文字。SetForegroundColour(...)来设置字的颜色,SetBackgroundColour(...)设置背景的颜色。

  style可以设置如wx.ALIGN_CENTER这种,来让文字居中对齐等等

  ■  输入框 TextCtrl

  TextCtrl的构造方法和StaticText类似,其style可以选

  TE_READONLY  设置输入框只读,不可编辑

  TE_PASSWORD  输入框中的输入不显示明文而显示黑点

  TE_MULTILINE  设置为多行文本输入框

  TextCtrl有如下类方法供调用:

    AppendText(...),WriteText(...)  向输入框末尾加上一些文本/向输入框开头加上一些文本

    Clear()  清空文本框

    GetValue(),SetValue(...)  获取/设置文本值

    GetRange(from,to)  返回两位置中间的部分的字符串(参数是正整数,指第N个字符。开头首个字符算0,算头不算尾。比如HelloWorld.GetRange(2,4) == "ll")

    Remove(from,to)  删除两个位置中间的部分的字符串

    SetInsertionPoint(...),GetInsertionPoint()  将光标设置到第N个字符前面(首个字符算0的话)/获得当前光标所在位置

  

  ■  按钮  Button

  构造方法也是类似的,label参数指定了在按钮上显示的文本

  类方法有:

    SetLabel(...),GetLabel()  设置label,获取label

    SetDefault()  把按钮设置为其所在窗口的默认按钮,即按下按钮之后和在这个窗口获得焦点时敲回车是一个效果

  ● 图片按钮

    可以用wx.Image来创建一个图片对象,然后用一些方法把这张图整合到button中就可以做成一个图片按钮:

pic = wx.Image("some_pic_path.png",wx.BITMAP_TYPE_BMP)    #建立一个图片对象,图片最好是.png格式的。
pic.ConvertToBitMap() #将图片格式转换
btn = wx.BitmapButton(panel,-1,pic) #建立图片按钮

wxpython - 布局和事件

wxpython - 更多组件

【Python】 用户图形界面GUI wxpython I 基本用法和组件的更多相关文章

  1. 【Python】 用户图形界面GUI wxpython II 布局和事件

    wxpython - 布局和事件 这章主要记录布局器Sizer以及事件的用法. // 目前还需要记录的:Sizer的Add方法加空白,Sizer的Layout,Sizer的Remove如何有效 ■ 布 ...

  2. 【Python】 用户图形界面GUI wxpython IV 菜单&对话框

    更多组件 ■ 菜单栏 Menu 菜单是很多GUI必不可少的一部分.要建立菜单,必须先创建菜单栏: menuBar = MenuBar() menu = Menu() item1 = menu.Appe ...

  3. 【Python】 用户图形界面GUI wxpython III 更多组件

    wxpython - 更多组件 我写到的这些组件可能一来不是很详细,二来不是最全的,想要更好地用这些组件,应该还是去看看教程和别的示例.比较简单的,推荐http://download.csdn.net ...

  4. AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件

    AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件( component s). 由于Java是一种独立于平台的 程序设计语言 ,但GUI ...

  5. Go 在 Windows 上用户图形界面 GUI 解决方案 Go-WinGUI 国产(使用cef 内核)

    Go 在 Windows 上用户图形界面 GUI 解决方案 Go-WinGUI 国产 Go 在服务端的优势不容置疑,但是在桌面应用上却没有好的 GUI 支持,本项目是 Go 语言在 Windows 上 ...

  6. python简单图形界面GUI入门——easygui【转】

    原文:https://blog.csdn.net/mingqi1996/article/details/81272621 感觉gui做起来成就感比较高,学完基础语言顺便花一个下午看看GUI设计,现在回 ...

  7. python之图形界面GUI开发 Tkinter 2014-4-7

    1.导入Tkinter 可以使用以下三种方法(1)from Tkinter import *#导入Tkinter(2)import TkinterTkinter.methodA使用 Tkinter.m ...

  8. 十. 图形界面(GUI)设计1.图形界面设计基础

    早先程序使用最简单的输入输出方式,用户在键盘输入数据,程序将信息输出在屏幕上.现代程序要求使用图形用户界面(Graphical User Interface,GUI),界面中有菜单.按钮等,用户通过鼠 ...

  9. Java图形界面GUI

    Java图形界面GUI 设置窗体JFrame对象 package com.Aha.Best; import javax.swing.ImageIcon; import javax.swing.JFra ...

随机推荐

  1. 开始研究unreal4了

    最后一个周末了,昨天去做了许多事,算是对最近的一些整理和了结吧.早上广州下雨了,9点起来吃了早餐之后又睡了1个小时.中午吃了泡面,幸福感max.晚上煎了菜脯蛋和肉卷,拖着拉着把<旋风十一人&gt ...

  2. NPM私有服务器架设 FOR CentOS

    确保计算机能够连接互连网. 一.安装 Couchdb1.6 1.(CentOS 6.7)如果版本低于6.7请使用下面命令更新系统库. yum update 2.使用下面命令安装依赖库 yum inst ...

  3. USACO section 1&period;1 C&plus;&plus;题解

    USACO section1.1:DONE 2017.03.03 TEXT Submitting Solutions DONE 2017.03.04 PROB Your Ride Is Here [A ...

  4. android学习ViewPager的简单使用

    使用ViewPager需要引入android.support.v4.View.ViewPager这样的jar包,谷歌公司为解决当前版本碎片化的问题,提供的兼容的包.主要目的就是解决向下兼容问题. 1, ...

  5. 在asp&period;net web api 2 使用 Serilog 记录日志

    Serilog是.net里面非常不错的记录日志的库,另外一个我认为比较好的Log库是NLog. 在我个人的asp.net web api 2 基础框架(Github地址)里,我原来使用的是NLog,但 ...

  6. clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

    clientHeight:包括padding但不包括border.水平滚动条.margin的元素的高度.对于inline的元素这个属性一直是0,单位px,只读元素. offsetHeight:包括pa ...

  7. Confluence 6 管理和恢复空间管理权限

    管理和恢复空间管理权限 可能有些空间的空间管理权限被系统的超级管理删除掉了.这样的空间是没有任何空间管理员的,用户和用户组都不能对空间进行管理.只有 Confluence 管理员权限的用户可以删除一个 ...

  8. FileUriExposedException&lowbar;Android7&period;0适配

    一. FileUriExposedException的解决 问题 由于在Android7.0上,google使用了新的权限机制,所以导致在调用相机的时候,如果传递的URI为”file://”类型,的系 ...

  9. 高并发Web

    hadoop适合处理分布式集群系统,本身是支持高速并发海量数据的写入和读取的.解决大量用户并发访问的方案有很多,给你个千万pv的参考方案:1)架构中直接引入软件名称的模块,是个人推荐使用的,如Hapr ...

  10. Solr学习之三 solr配置说明之一

    严格来说,我这篇内容,主要是根据Solr in Action关于配置的说明,以及参考Solr的wiki写的算是读书笔记吧,所有的图片默认来自Solr in Action这本书. 这本书我觉得对学习So ...