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. 用Dw CS6运行静态页面出问题

    1.报错截图一 2.报错截图二

  2. hi3531调用sil9024的驱动

    //测试mao  printf("\n\n");    unsigned int cmd=1;    unsigned long arg =4;  fd = open(" ...

  3. Filter组件开发中的SDK基类分析

    DirectShow SDK提供了一套开发Filter的基类源代码.基于这些基类开发Filter将大大简化开发过程. 1.CBaseObject 大部分SDK类都从CBaseObject类(参见com ...

  4. 多线程下不重复读取SQL Server 表的数据

    在进行一些如发送短信.邮件的业务时,我们经常会使用一个表来存储待发送的数据,由后台多个线程不断的从表中读取待发送的数据进行发送,发送完成后再将数据转移到历史表中,这样保证待发送表的数据一般情况下不会太 ...

  5. PyCharm运行报编码错误

    运行报如下错误: SyntaxError: Non-ASCII character '\xe8' in file /home/ubuntu/code/201803091253-text.py on l ...

  6. jquery 记住账号 记住密码

    <body> <label><input type="checkbox" onclick="loginBtn_user()" /& ...

  7. Oracle11g客户端client的下载与安装

    下载地址: http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-09446 ...

  8. FFT && 复数重载

    复数重载 与 FFT 1.复数重载: 重载了复数的运算,即重载了复数的加减乘以及赋初值. struct Complex{ //复数的重载 double r,i; IL Complex(){r = 0; ...

  9. [USACO15FEB]审查(黄金)Censoring (Gold)

    题面 传送门 Sol AC自动机+栈,每次匹配到栈顶减去这个单词的长度,回到之前的状态 最后栈中留下的就是答案 # include <bits/stdc++.h> # define IL ...

  10. [BZOJ1085] [SCOI2005] 骑士精神 (A*)

    Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2, ...