版权所有,转载请注明出处:http://guangboo.org/2013/02/06/wx-lib-agw-customtreectrl-customtreectrl-hide-scrollbar

wx.lib.agw.customtreectrl.CustomTreeCtrl虽然是由ScrolledWindow继承而来,但是构造参数style却不起作用,即使设置参数style = wx.VSCROLL即只显示右边滚动条,实际运行起来两个滚动条依然会显示。本土使用windows api来处理隐藏滚动条的问题。

wxPython缺陷

wxPython为使用Python开发语言的开发者提供了一套跨平台的GUI库,它是wxWidgets的一个Python封装,并且也有很多工具用于wxPython可视化的UI设计。然而在我使用它的这段时间,发现该GUI库还存在一些缺陷,如控件都不支持透明背景,控件的背景色都是继承父控件的背景色,并且Panel,window类等还没有背景图片的接口,这就给对UI设计要求较高的应用带来了不便。虽然网络上也有很多网友提供了很多解决方法,如重新绘制控件,使支持背景透明,使Panel支持背景图片。

除了wxPython控件的一些功能欠缺外,还有些agw控件还存在一些问题,如本文要说的wx.lib.agw.customtreectrl.CustomTreeCtrl控件,无论怎么设置构造函数的style值,都无法禁用滚动条。ScrolledWindow提供的EnableScrolling方法也没有效果,因此,要想实现隐藏滚动条还必须另辟蹊径。

Windows API--ShowScrollBar

好在windows提供了一些API可以才滚动条的属性,其中ShowScrollBar函数可以实现滚动条的显示与隐藏,因此可以使用该API来控制wxPython控件wx.lib.agw.customtreectrl.CustomTreeCtrl的滚动条的隐藏与显示。

ShowScrollBar方法签名:

BOOL ShowScrollBar(_In_  HWND hWnd,_In_  int wBar,_In_  BOOL bShow
);

其中参数hWnd为要控制滚动条控件的句柄,wBar为滚动条选项,包括:SB_HORZ(0),表示标准横向滚动条;SB_VERT(1),表示标准纵向滚动条;SB_CTL(2),表示滚动条控件;SB_BOTH(3),表示标准横纵滚动条。bShow则表示显示或隐藏,True为显示,False为隐藏。

ShowScrollBar调用

在控件的构造函数中调用该api隐藏滚动条,经过测试是不行的,需要在EVT_PAINT事件中调用,并且必须要调用event.Skip()以调用其他已注册的EVT_PAINT事件的处理方法。另外windows api ShowScrollBar在python中的定义,需要导入ctypes库。部分代码如下,首先是导入ctypes和常量定义:

import wx
import wx.lib.agw.customtreectrl as CT
import ctypesSB_HORZ = 0
SB_VERT = 1
SB_CTL = 2
SB_BOTH = 3

接着是自定义控件:

class MyCustomTreeCtrl(CT.CustomTreeCtrl):def __init__(self, parent, id = -1, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.VSCROLL):CT.CustomTreeCtrl.__init__(self, parent, wx.ID_ANY, style = wx.VSCROLL,agwStyle = wx.TR_HAS_VARIABLE_ROW_HEIGHT | wx.TR_NO_BUTTONS | wx.TR_EXTENDED | wx.TR_FULL_ROW_HIGHLIGHT | wx.TR_HIDE_ROOT | wx.TR_NO_LINES)self.EnableSelectionVista(True)self.SetGradientStyle(1)self.SetBackgroundColour(wx.WHITE)self.SetBorderPen(wx.TRANSPARENT_PEN)self.Bind(wx.EVT_PAINT, self._on_hide_scrollbar)def _on_hide_scrollbar(self, event):ctypes.windll.user32.ShowScrollBar(self.GetHandle(), SB_VERT, False)event.Skip()

隐藏wx.lib.agw.customtreectrl.CustomTreeCtrl滚动条相关推荐

  1. 隐藏多行文本框的滚动条

    <textarea style="overflow:hidden"></textarea> 会隐藏多行文本框的滚动条,但文字加多少,滚动条也不会出现. 只有 ...

  2. python在线编辑器可视化_python软件——wxpython可视化编辑器 v4.1附使用教程

    wxpython v4.1pc版更新日志 1.将wx.Font.AddPrivateFont的示例添加到演示中. 2.在wx.TextCtrl中为OSXEnableAutomaticQuoteSubs ...

  3. python3:wxpython分割窗、通过菜单项切换左面板树形控件

    1. 功能概述 这里简单介绍下,通过分割窗垂直分割出两块区域,并绑定两个面板,左面板绑定3个树形控件,初始隐藏.然后添加菜单,绑定事件,通过点击菜单来切换树形控件的显示 2. 效果图         ...

  4. wxPython:Python首选的GUI库 | CSDN博文精选

    作者 | 天元浪子 来源 | CSDN博客 文章目录 概述 窗口程序的基本框架 事件和事件驱动 菜单栏/工具栏/状态栏 动态布局 AUI布局 DC绘图 定时器和线程 后记 概述 跨平台的GUI工具库, ...

  5. wxpython如何分开界面和运行代码_如何调试wxPython Demon源代码及几个细节

    在调试demon代码时,常会碰到一些模块无法导入的情况,这是因为好多模块不是Python的标准库, 而是demon安装目录下的库文件,所以学习demon源码的时候,要把这些库copy到同一个目录下, ...

  6. python安装wxpython库_wxPython:python 首选的 GUI 库

    原标题:wxPython:python 首选的 GUI 库 作者:许向武 blog.csdn.net/xufive/article/details/82665460 概述 跨平台的GUI工具库,较为有 ...

  7. xwpython aui 子窗口-Python/wxPython:AUI管理器,防止面板离开Fram

    我用下面的代码来测试AUI的一些特性.如果运行代码,应该会找到一个框架,其中有两个面板,可以分离/浮动.但是,面板可以拖动到屏幕上的任何位置.我想防止面板离开主机架.这可能吗?我以为会有一面旗帜或是我 ...

  8. pythongui界面实例_wxPython:python首选的GUI库实例分享(5)

    AUI布局 Advanced User Interface,简称AUI,是 wxPython 的子模块,使用 AUI 可以方便地开发出美观.易用的用户界面.从2.8.9.2版本之后,wxPython ...

  9. 用声卡实现的存储示波器

    用声卡实现的存储示波器 文章目录 用声卡实现的存储示波器 背景知识 采样频率 量化精度 生产者/消费者模式 总体规划 设计目标 功能规划 界面规划 程序结构 从声卡采集数据 声音采集类的定义 消费者/ ...

最新文章

  1. 关于Java中try-catch-finally-return的执行顺序
  2. linux上传文件到服务器
  3. vc 代码检查工具_C++网络安全入侵检测技术模块及源程序代码
  4. 阿里云人工智能ET夺肺结节诊断世界冠军
  5. iframe父子页面间的关系
  6. (软件工程复习核心重点)第三章需求分析-第三节:状态转换图
  7. C#LeetCode刷题之#257-二叉树的所有路径(Binary Tree Paths)
  8. ROS笔记(29) 启动Movelt!
  9. 4-1 可复用性概述
  10. UVA11361 Investigating Div-Sum Property
  11. Linux系统多网卡环境下的路由配置
  12. 如何养成好的Linux操作习惯
  13. 2008服务器怎么建网站,2008系统快速搭建网站教程
  14. 计算机毕业论文附录的模板,毕业论文附录格式要求
  15. 生物识别技术在汽车领域带来了巨大变革
  16. AWS System Manger 批量操作EC2 实例
  17. MFC中通过SendMessage修改Edit控件的文本
  18. PS如何查看所选图层的实际像素?
  19. ERROR 1010 (HY000): Error dropping database (can‘t rmdir ‘.\qpweb‘, errno: 41) 删库失败问题的解决
  20. 〖Python自动化办公篇⑫〗- Excel 文件自动化 - 读取 excel 数据

热门文章

  1. python利用Trie(前缀树)实现搜索引擎中关键字输入提示(学习Hash Trie和Double-array Trie)...
  2. thinkPHP打包下载
  3. 只要做的是善事,即使作秀也温馨
  4. 蓝桥杯 算法训练 三角形面积
  5. Android 判断手机是否有传感器
  6. 得市场者得天下 2013款长城哈弗H5
  7. 8小时8分:2018年天猫双11交易额破1207亿元 已超2016年全天
  8. deepfm(deepfm)
  9. avi 生成 m3u8/ts 文件
  10. 伯乐识马,天九共享独角兽加速合作大会盛大开幕