【Python】 用户图形界面GUI wxpython III 更多组件
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 更多组件的更多相关文章
- AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件
AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件( component s). 由于Java是一种独立于平台的 程序设计语言 ,但GUI ...
- 【Python】 用户图形界面GUI wxpython I 基本用法和组件
wxpython - 基本用法和组件 wxpython是python对跨平台GUI库wxWidgets的封装.wxWidgets是由C++写成的. wxpython被包装进了wx模块中,用它设计GUI ...
- 【Python】 用户图形界面GUI wxpython IV 菜单&对话框
更多组件 ■ 菜单栏 Menu 菜单是很多GUI必不可少的一部分.要建立菜单,必须先创建菜单栏: menuBar = MenuBar() menu = Menu() item1 = menu.Appe ...
- 【Python】 用户图形界面GUI wxpython II 布局和事件
wxpython - 布局和事件 这章主要记录布局器Sizer以及事件的用法. // 目前还需要记录的:Sizer的Add方法加空白,Sizer的Layout,Sizer的Remove如何有效 ■ 布 ...
- Go 在 Windows 上用户图形界面 GUI 解决方案 Go-WinGUI 国产(使用cef 内核)
Go 在 Windows 上用户图形界面 GUI 解决方案 Go-WinGUI 国产 Go 在服务端的优势不容置疑,但是在桌面应用上却没有好的 GUI 支持,本项目是 Go 语言在 Windows 上 ...
- python简单图形界面GUI入门——easygui【转】
原文:https://blog.csdn.net/mingqi1996/article/details/81272621 感觉gui做起来成就感比较高,学完基础语言顺便花一个下午看看GUI设计,现在回 ...
- python之图形界面GUI开发 Tkinter 2014-4-7
1.导入Tkinter 可以使用以下三种方法(1)from Tkinter import *#导入Tkinter(2)import TkinterTkinter.methodA使用 Tkinter.m ...
- Java图形界面GUI
Java图形界面GUI 设置窗体JFrame对象 package com.Aha.Best; import javax.swing.ImageIcon; import javax.swing.JFra ...
- python桌面端开发手记(序列化、压缩包、加密、图形界面GUI)
0x00 前段时间接到一个小项目是给某行业内部开发离线桌面端,业务流实现上总体分信息录入.加密导出.因为是win桌面端,所以老板说依托Access用VBA做,我据理力争了一下.之前就是用Acces ...
随机推荐
- 【html5】html5本地简单存储
html5本地简单存储 HTML5 提供了四种在客户端存储数据的新方法,即 localStorage .sessionStorage.globalStorage.Web Sql Database. 前 ...
- freemarker报错之十五
1.错误描述 六月 04, 2014 11:04:03 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...
- java重写和重载
方法的重载: 在一个类中的两个或两个以上的方法,他们方法名相同但是参数列表不同,这种方式称为方法的重载,方法的重载是实现多态性的方式之一. 参数列表不同指的是参数的个数不同或相同的个数但顺序不同或者类 ...
- Linux以百万兆字节显示内存大小
Linux以百万兆字节显示内存大小 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free --tera total used free shared buf ...
- 使用NPOI导入导出标准Excel
尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 ...
- 手机端仿ios的单级联动脚本三
脚本 <script>var weekdayArr=['非公司企业法人','个体工商户','私营独资企业','私营合伙企业','有限责任公司','股份有限责任公司'];var mobile ...
- 手机端仿ios的省市县3级联动脚本一
一,图片实例 二,代码 2.1,代码 $('#provinceCity_fu').click(function(){ var $this = $(this); new Picker({ "t ...
- JQuery移动动画实现点击按钮切换图片--JQuery基础
直接贴源码了哈,这些都是自己总结的……汗水几何?希望能帮到大家. <%@ Page Language="C#" AutoEventWireup="true" ...
- linux用户和群组
1.用户的主要群组和次要群组 切换用户:su -username 查看群组:#vi /etc/passwd //主要群组 #vi /etc/gro ...
- 在实训时做的项目出现的ajax json数据传送的问题
json数据在前后端数据交互的时候非常常见,但是大部分人对json都么有系统的学习过,所以就会出现一些很简单的问题却要非很大劲去解决. 在用json传递数据的时候属性必须用双引号括住,一般如果在进行字 ...