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 ...
随机推荐
-
Laravel 5 使用中的问题记录(持续更新)
1.更新了blade模板却没有更新缓存 通过使用ftp上传文件到服务器,更新了blade模板,却没有更新缓存,经查,原因是系统时间的影响,通过ftp上传的模板文件修改时间与缓存文件的时间不一致,导致模 ...
-
iOS 从手机相册里选取图片
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
-
微软为Visual Studio开发助手拓展C++支持
近日,微软宣布了一项 Visual Studio“开发助手”(Developer Assistant)插件的重大更新,其现已支持“基于 C++ 的情境感知 web 解决方案”.开发助手能够嵌入 Vis ...
-
cdoj 1334 郭大侠与Rabi-Ribi 贪心+数据结构
郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Su ...
-
SqlCommand.ExecuteScalar 方法
本文来自:http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.100 ...
-
jvm理论-运行时数据区
三大流行jvm sun HotSpot ibm j9 BEA JRockit Oracle 会基于HotSpot整合 JRockit. jvm运行时数据区 java虚拟机所管理的内存将会包括以下几个运 ...
-
Nginx网站实现ssl安全套接字
nginx.conf配置 server { listen 443 ssl; server_name www.example.com; ssl on; ssl_certificate cert.pem; ...
-
Scrum冲刺阶段1
各个成员在 Alpha 阶段认领的任务 人员 任务 何承华 美化设计 部分后端设计 陈宇 后端设计 丁培辉 美化设计 部分后端设计 温志铭 前端设计 杨宇潇 服务器搭建 张主强 前端设计 明日各个成员 ...
-
微信生成二维码 只需一个网址即刻 还有jquery生成二维码
<div class="orderDetails-info"> <img src="http://qr.topscan.com/api.php?text ...
-
数据结构与算法之二叉树 ——in dart
用dart语言实现的二叉树,实现了插入.查找.删除,中序遍历.前序.后序遍历等功能. class BinaryTree<E extends Comparable> { Node<E& ...