wxpython - 更多组件

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

  ■  复选框 CheckBox

  复选框需要对每个单独的选项构建,常用的构造方法是:CheckBox(parent,id,label,pos,size)

  事件中的EVT_CHECKBOX是指被Bind的checkbox被勾选或取消时发生的事件

  CheckBox常用的类方法有:

    IsChecked()  返回True或者False

    Set/GetValue()  设置/获取状态,也是True或者False

    Set/GetLabel()  设置/获取复选框的文本

  ■  单选框 RadioButton

  构造方法:RadioButton(parent,id,label,pos,size,style=RB_GROUP或者None)

  单选框的构造方法和复选框是类似的,但是有一个style,其作用是用来分组。一个单选框组里面可以有若干个单选框,但是一个组只能有一个单选框被选中。令style=wx.RB_GROUP来使得这个单选框成为一个新的组的第一个成员,以后构建的成员也默认全部都是这个组的成员直到有一个新的单选框又开了一个RB_GROUP。

  EVT_RADIOBUTTON指被Bind的RadioButton被选中时发生的事件

  RadioButton常用的类方法和复选框是类似的:

    Set/GetValue()  值也是True/False

    Set/GetLabel()  

  ■  进阶单选框 RadioBox

  当选项比较多时,一个个加RadioButton有点繁琐,于是可以用RadioBox来构造。另外,从外观上来说,RadioBox会在所有选项的外围加一条细线把不同组的选项给分割开。另外RBox也有一些统一管理选项的方法,比较方便。

  构造方法:RadioBox(parent,id,label,pos,size,list,N,RA_SPECIFY_ROWS/RA_SPECIFY_COLS)。其他都是差不多的,主要是几点,label的指的是写在框框上面的文字而不是选项的文字,list给出了所有选项的文字,N是一个自然数,配合后面的参数是ROWS还是COLS来指出这个RBox有几行和几列。

  和其他组件不太一样的是,上述参数中,pos和size是必须的,否则会报错,另外ROWS和COLS选一个写就好了,程序会按照指出的行数或列数自动来调整另一个。size指的是框框的大小,并不受到有多少选项的影响。

  稍微有点复杂,就展示一个实例:

class MyFrame(Frame):

    def __init__(self,pos,size):
Frame.__init__(self,None,-1,pos=pos,size=size) totalPanel = Panel(self,-1)
totalSizer = BoxSizer(VERTICAL) oneSizer = BoxSizer(HORIZONTAL)
self.rb = RadioBox(totalPanel,-1,"RadioBox",(0,0),(200,100),["choiceA","choiceB","choiceC","choiceD"],2,RA_SPECIFY_ROWS)
oneSizer.Add(self.rb) totalSizer.Add(oneSizer,flag=ALIGN_CENTER)
totalPanel.SetSizer(totalSizer) def test(self,event):
print self.radio1.IsEnabled() if __name__ == '__main__':
app = App()
myFrame = MyFrame((200,200),(300,300))
myFrame.Show()
app.MainLoop()

  界面:

  

  EVT_RADIOBOX是RadioBox的事件,指的是当Box中有任意一选项被选中的事件。

  其类方法也很丰富:

    GetCount()  返回框中选项的总数

    Get/SetItemLabel(n)  返回/设置给出的初始化列表中索引为n的那项的label

    FindString(...)  返回相关Label的选项的索引,若没找到相关string就返回-1

    GetSelection()  返回选中项的索引

    SetSelection(n)  使索引为n的选项被选中

    GetStringSelection()  返回选中项的Label

    EnableItem(n,flag)  使得索引为n的选项失效或有效,flag是True/False

  

  ■  下拉选项

  下拉选项也是比较常用的一个组件,构造方法:Choice(parent,id,pos,size,choices)。和RBox一样,pos和size也是必须的,list提供了选项做成的列表。

  类方法也有GetStringSelection(),GetSelection(),GetCount()等等,就不再重复说了。总之脑补一下就好

  *SetItems(list)  可以直接更新下拉列表的选项,原理是先调用Clear()方法清空当前选项,然后再调用AppendItems(list)方法载入新选项列表。

  *Append(string),AppendItems(list),Insert(string,index)等等方法用于增加选项,更多详细信息可以进python shell去help(wx.Choice)一下看

  ■  其他选择结构还有列表框ListBox,复选列表框CheckListBox等等,不多说了,想用可以查教程

  ■  进度条

  用Gauge可以在wx中加入进度条。常见构造方法:Gauge(parent,id,range=100,pos,size,style=GA_HORIZONTAL)

  range是指进度条加载满时指定的一个终点值,程序将根据这个值来确认当前进度条应该有多满。style指定了加载的方式是横向加载还是竖向加载,竖直加载的话要GA_VERTICAL

  和其他一些组件不同的是,单单把进度条构造出来放在窗口里还是不够的,这样的进度条是静态的。应该把进度条和某个过程结合起来,通过SetValue(..)方法来更新进度条的加载情况。比如下面这个实例

count = 0
while count<=100:
self.gauge.SetValue(count)
count += 1
time.sleep(0.1)

  运行到上面这段语句的时候,会每隔0.1秒更新百分之一的进度条,所以10秒之后进度条能读完。

  精度条还有一个EVT_IDLE事件,好像是说只要进度条没有在往前读,就会触发。但是我觉得这个不是很科学,不知道拿它来干什么。

【Python】 用户图形界面GUI wxpython III 更多组件的更多相关文章

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

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

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

    wxpython - 基本用法和组件 wxpython是python对跨平台GUI库wxWidgets的封装.wxWidgets是由C++写成的. wxpython被包装进了wx模块中,用它设计GUI ...

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

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

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

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

  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. Java图形界面GUI

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

  9. python桌面端开发手记(序列化、压缩包、加密、图形界面GUI)

    0x00   前段时间接到一个小项目是给某行业内部开发离线桌面端,业务流实现上总体分信息录入.加密导出.因为是win桌面端,所以老板说依托Access用VBA做,我据理力争了一下.之前就是用Acces ...

随机推荐

  1. ubuntu10.04 安装配置tftp服务

    tftpd-hpa 是一个功能增强的TFTP服务器.它提供了很多TFTP的增强功能,它已经被移植到大多数的现代UNIX系统. 1.安装 sudo apt-get install tftpd-hpa t ...

  2. ap module omap4460

    http://gitorious.org/ap-module-omap4460 Dashboard Register Login Activities Projects Teams ap module ...

  3. API接口签名校验

    在开发app中,我们经常要为app提供接口.但是为了保证数据的安全,我们通常会对接口的参数进行加密. 1.不验证的接口api api接口请求,"http://www.xx.com/getUs ...

  4. 关于游览器网页标题logo的设置

    <link rel="shortcut icon"type="image/x-icon" href="images/favicon.ico&qu ...

  5. var dataObj=eval("("+data+")");//转换为json对象(解决在ajax返回json格式数据的时候明明正确的获取了返回值但是却就是进不去success方法的问题。格式错误)

    一,原理 1.1,解析1 将字符串解析为JavaScript代码,比如:var a = "alert('a');";这里的a就只是一个字符串而已,输出的话也是alert(a);这句 ...

  6. 异常-----Java compiler level does not match解决方法

    1, 先设置好jdk,需要确定 项目,eclipse/myeclipse,系统 用的是同一个版本的JDK,我系统中安装的JDK是1.7,所以我把eclipse的jdk成1.7 2, 进入 window ...

  7. UltraEdit 脚本 实现查找替换

    UltraEdit中,要实现,脚本查找替换功能,按照下文中的做法稍作修改, 现象很奇怪,有时可以进行查找替换有时不能. http://blog.csdn.net/neareast/article/de ...

  8. JavaScript之BOM

    一.什么是BOM? BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”. 二.Windows对象 Window对象是客户端Ja ...

  9. CodeIgniter怎么引入公共的头部或者尾部文件(实现随意引入或分区域创建header.html,bodyer.html,footer.html)

    除非你天赋异禀,凡事基本对任何人来说都是开头难的,且开头的事情如果没有做好 往往会打掉一个人对于某件事的希望及其激情,所以咱们先从容易的事情开始慢慢建立自己 信心.后面的事情咱们再慢慢推进. 如果你是 ...

  10. javascript三角函数的使用

    其实很多编程语言里面都有数学函数,而且很多数学函数包括三角函数,只不过有些时候可能我们用的并不多,我最近在做一个h5的游戏,其中有一个需求就是射击的枪支需要更随鼠标变换位置,鼠标移动到什么地方,炮口就 ...