常用的wxpython控件使用方法总结

wxpython comboBox 自动完成提示功能 摘要最近在使用python做一个桌面应用,使用到了ComboBox这个控件,但是对于这个控件的想法是能够实现类似于百度搜索框的功能,输入相应的搜索内容,能够显示下拉列表,下拉列表中显示相关的提示信息。google了半天有的功能只有自动补充完成,并不能够达到显示下拉列表的形式,一旦遇到多个联想词的时候就会有些问题。所以自己研究了下,在其原先的基础上稍微修改了下代码实现了这个功能。下面来看看代码吧正文# 阅读详情

写在开头:总结下现阶段我常用到wxpython控件的一些使用方法,便于记录和查询。

我一般是借助wxFormBuilder工具搭建基础的界面生成代码,这样做的好处自然是方便设计界面增加界面的美观度,再在.py文件手写代码设置控件的事件驱动,以此来完成GUI工具的开发。

wxFormBuilder工具的使用介绍可以查看本作者的文章:python借助wxFormBuilder工具搭建基础的GUI界面—wxFormBuilder工具使用介绍

在这里插入图片描述

下图是我常用的wxFormBuilder基础组件及wxpython中控件的方法。

在这里插入图片描述

1. TextCtrl文本框

1.1 单行文本框变多行文本框

默认TextCtrl控件是单行文本输入框的形式,要变成多行文本框即输入字符自动换行,需要设置TextCtrl支持多行文本显示。详情可以查看本作者的文章:wxpython控件TextCtrl如何显示多行文本。选择TextCtrl的style为“wxTE_MULTILIME"即设置TextCtrl为显示多行文本。

1.2 设置文本框显示内容及获取文本框内容

# 设置邮件发送的默认正文
self.m_textCtrl4.SetValue(mail_content)
mail_content = self.m_textCtrl4.GetValue()

1.3 文本框输入字数限制–最多只能输入多少字符

# 设置m_textCtrl4的字数不能超过50,不然弹出界面显示提醒用户
    self.m_textCtrl4.Bind(wx.EVT_TEXT_MAXLEN, self.reach_max_limit)
    
def reach_max_limit(self, event):
    res = "输入字数超出了上限值:%s!" % 50
    toastone = wx.MessageDialog(None, "%s" % res, "信息提示",
                                wx.YES_DEFAULT | wx.ICON_QUESTION)
    if toastone.ShowModal() == wx.ID_YES:  # 如果点击了提示框的确定按钮
        toastone.Destroy()  # 则关闭提示框

1.4 文本框支持“Enter”键入事件

当键盘按下“enter”按钮时textctrl文本框被触发执行相应的动作。详情可以查看本作者的文章:wxpython控件textctrl如何设置enter事件。textctrl的style选择wxTE_PROCESS_ENTER。

self.m_textCtrl25 = wx.TextCtrl(sbSizer3.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(600, -1),
                                     wx.TE_PROCESS_ENTER)
                                        
 # 设置文本框的enter事件,不点击查询按钮直接按enter就可以实现搜索功能
self.m_textCtrl25.Bind(wx.EVT_TEXT_ENTER, self.search_id_info)

1.5 文本框设置只读不允许修改

SetEditable()方法的输入参数为“False”即可实现文本框设置只读不允许修改。

self.m_textCtrl5.SetEditable(False)

2. Button按钮

2.1 使能按钮功能不可用

self.m_button25.Disable()

设置按钮Disable()之后,即使点击了按钮也不会触发按钮的事件。

2.2 设置按钮的触发事件

self.m_button29.Bind(wx.EVT_LEFT_DOWN, self.open_last_page)  # 上一页
self.m_button30.Bind(wx.EVT_LEFT_DOWN, self.open_next_page)  # 下一页
self.m_button28.Bind(wx.EVT_LEFT_DOWN, self.open_special_page)  # 跳转页面

按钮的触发事件设置可以查看本作者的文章:

wxpython设计GUI:同一个按钮控件响应多个事件

wxpython设计GUI:grid控件实现显示表单数据功能,同时实现界面的上下翻页以及跳转功能

3. Choice单选框

3.1 改变Choice在界面上的选项显示

例如:查询依据我使用Choice控件来设置被选列表,但是界面使用一段时间后用户反馈一般他们都习惯按照“创建日期”来查询,而不是默认的第一个“单号”作为查询依据,那么就可以直接修改m_choice2控件SetSelection()方法的参数,将m_choice2在界面上的选项显示成“创建日期”,更符合用户操作需求贴合用户使用。

m_choice2Choices = [u"单号", u"需求描述", u"创建人", u"问题来源",
                    u"项目状态", u"严重等级", u"流程状态", u"创建日期"]
self.m_choice2 = wx.Choice(sbSizer3.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_choice2Choices, 0)
self.m_choice2.SetSelection(7)

在这里插入图片描述

由上可知:通过SetSelection()方法可以设置打开界面时用户看到Choice控件当前显示的选项,这样就在不改变原始列表选项排列的情况下,将常用的被选项突出放在当前显示便于用户操作。

3.2 获取用户选择的选项

用户选中Choice控件的某个选项后,通过wx.EVT_CHOICE触发事件设置的函数来获取被选中的选项进行其他逻辑操作。通过GetString()方法获取具体的列表选项字符,而这个方法一般是和GetSelection()方法(获取被选中的是列表中的第几个索引)配合使用的。

 # 查询依据
self.m_choice2.Bind(wx.EVT_CHOICE, self.show_calendar)

def show_calendar(self, event):
    search_condition = self.m_choice2.GetString(self.m_choice2.GetSelection())
    if search_condition in ["创建日期"]:
        self.m_calendar1.Show()
    else:
        self.m_calendar1.Hide()

GetSelection()方法:

在这里插入图片描述

GetString()方法:

在这里插入图片描述

4. ComboxBox列表与本文组合框

ComboxBox控件的相关说明文档:https://docs.wxpython.org/wx.ComboBox.html?highlight=wx%20combobox#api-class-api

A combobox is like a combination of an edit control and a listbox.

4.1 限制ComboxBox控件的内容不能被用户修改

combobox控件与Choice控件的区别主要是Choice控件只能选择列表中的选项,而combobox控件还可以手动键入其他不在列表中的选项。使用combobox控件后为了防止用户键入其他不符合列表设置的选项而触发程序bug,一般使用SetEditable方法限制combobox控件的内容不能被用户修改。

# 限制特定控件的内容不能被用户修改
self.m_comboBox8.SetEditable(False)  # 用户只能选择,不能编辑

4.2 控件初始化时设置好列表要显示的内容

通过设置combobox控件的choices属性,可以在打开界面时自动显示choices属性的列表选项。

在这里插入图片描述

m_comboBox8Choices = get_next_executor("管理")
self.m_comboBox8 = wx.ComboBox(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize,
                                     m_comboBox8Choices, 0)

4.3 先隐藏控件再设置控件应该显示的列表选项

除了初始化控件时就设置好combobox控件要显示的列表选项外,也可以先使用Hide()隐藏该控件,经过逻辑判断后使用SetItems方法设置combobox控件要显示的列表选项。

# 设置comboBox的items
self.m_comboBox11.Hide()
if page_name in ["项目管理记录_1", "项目管理记录_3", "项目管理记录_5"]:
    choice_list = ["返回开发", "关闭问题单", "提到新需求"]
elif page_name in ["项目管理记录_2", "项目管理记录_4", "项目管理记录_6"]:
    choice_list = ["回归测试", "关闭问题单", "提到新需求"]
elif page_name in ["项目管理记录_7"]:
    choice_list = ["关闭问题单", "提到新需求"]
else:
    # 项目管理记录
    choice_list = ["回归测试", "关闭问题单", "提到新需求"]
self.m_comboBox12.SetItems(choice_list)

5. HyperlinkCtrl链接控件

HyperlinkCtrl控件使用说明文档:https://docs.wxpython.org/wx.adv.HyperlinkCtrl.html?highlight=wx%20adv%20hyperlinkctrl#events-events-emitted-by-this-class

5.1 修改HyperlinkCtrl的触发事件

不设置HyperlinkCtrl控件触发事件的话,默认是用户点击HyperlinkCtrl控件后自动打开相应地址的文件。不好的地方是某些格式的文件可能无法直接打开,所以最好设置HyperlinkCtrl控件的触发事件将相应地址的文件复制到其他目录,用户再去新的目录打开该文件。

在这里插入图片描述

self.m_hyperlink16 = wx.adv.HyperlinkCtrl(self, wx.ID_ANY, u"wxFB Website", wx.EmptyString,
                                              wx.DefaultPosition, wx.DefaultSize, wx.adv.HL_DEFAULT_STYLE)

# 设置链接控件的点击事件
self.Bind(wx.adv.EVT_HYPERLINK, self.download_file_5, self.m_hyperlink16)

def download_file_5(self, event):
    src_path = self.m_hyperlink16.GetURL()
    download_file(src_path)

5.2 修改HyperlinkCtrl的标签名

HyperlinkCtrl控件的标签名默认是"wxFB Website"。为了界面的美观,一般先隐藏HyperlinkCtrl控件,用户上传文件后再显示HyperlinkCtrl控件,此时需要将HyperlinkCtrl控件的标签显示成刚用户上传的文件名称。

if regression_test_dict["回归测试上传附件"][i] != "wxFB Website":
    addr = os.path.join(id_path, regression_test_dict["回归测试上传附件"][i])
    if os.path.exists(addr):
        hyperlink_list[i].Show()
        hyperlink_list[i].SetURL(addr)
        hyperlink_list[i].SetLabel(regression_test_dict["回归测试上传附件"][i])
    else:
        hyperlink_list[i].Hide()
else:
    hyperlink_list[i].Hide()
wxPython 实践(五)高级控件 wxPython 实践(一)概述 wxPython 实践(二)基础控件 wxPython 实践(三)页面布局 wxPython 实践(四)事件响应 wxPython 实践(五)高级控件 阅读详情

相关推荐

wxpython中单选框的两种创建方式源码展示

#coding=utf-8 import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,"多模测试热补丁工具",size = (800,600)) panel = wx.Panel(self) #第一种方法使用wx.Radio...

linuxcare的博客 3261

实战wxPython:033 - 基本控件之文本输入控件TextCtrl

文本控件wx.TextCtrl是用来显示和编辑文本的控件,它支持单行和多行的文本编辑。在某些平台上,支持给文本控件中的文本设置一些简单的格式和风格。

seniorwizard的专栏 2892

Zemax API 与 Python 的独立应用程序

Zemax 提供了多个 python 示例代码,位于 Documents\Zemax\ZOS-API Sample Code\Python。使用以下代码,它们保存在 ZOS 文件目录中:/Documents\Zemax\Samples\API\Python。此代码块定位已安装的 OpticStudio 版本,确定根目录,创建命名空间和类,加载局部变量。如果定义的镜头需要一些特殊的编辑,例如反转,一种快速方法是从位于编程选项卡的 ZOS-API 语法帮助中找到相应的命令。重新运行整个代码块,镜头方向会改变。

jkh920184196的博客 1977

实战wxPython:032 - 基本控件之下拉列表框ComboBox

组合框就像编辑控件和列表框的组合。可显示为静态列表,文本字段可编辑或只读;在不同的平台上,它可以是带有文本字段的下拉列表;也可以是一个没有文本字段的下拉列表。

seniorwizard的专栏 2821

VoIP概述

VoIP统一通信与VoIPVoIP与传统电话比较VoIP各项产品设备的类型及应用 统一通信与VoIP 统一通信指的是把计算机与传统通信技术统一成一体的新通信模式,融合计算机网络与传统通信网络在一个网络平台上,实现电话、传真、数据传输、音视频会议、呼叫中心、即时通信等众多应用服务 VoIP又称IP电话或IP网络电话,是Voice Over IP的缩写,这种技术通过对语音信号进行编码数字化,压缩处理成压缩帧,然后转换成为IP数据包在TCP/IP网络上进行传输,从而达到了在IP网络上进行语音通信目的 VoIP与传

kaminao的博客 4359

别再为授权费头疼了!手把手教你免授权搞定西门子、马扎克等12种主流数控机床的数据采集

本文提供了一套免授权采集西门子、马扎克等12种主流数控机床数据的实战指南,帮助中小型机加工车间节省80%以上的采集成本。通过TCP/UDP协议逆向工程和跨平台数据整合,实现经济、灵活且可持续的数据采集方案,涵盖设备兼容性处理、数据频率优化等关键问题。

weixin_26873711的博客 708

wxpython手册_wxPython笔记:wxpython常用控件总结(转载)

主要使用wxPython(最成熟的跨平台python GUI工具包)前戏:基础了解import wxclass MyFrame(wx.Frame): #创建自定义Framedef __init__(self,parent):wx.Frame.__init__(self,parent,id=-1,title="Hello World",size=(300,300)) #设置窗体"""panel...

weixin_39580682的博客 1059

Keil 5安装教程(C51与MDK共存)

目录前言MDK的安装C51的安装安装完成后的验证新建C51工程添加C51程序文件编译测试总结 前言 本篇文章将介绍嵌入式开发工具Keil 5的安装方法,并使MDK(Microcontroller Development Kit,开发stm32时会用到)和C51(51单片机C语言软件开发系统)共存。今后使用Keil 5可同时开发51单片机程序和ARM单片机程序,便于学习与从51到32的过渡。 注: 为防止商业纠纷,本篇文章不涉及文中软件的注册破解,请支持正版。 同时为了便于今后更深入的学习,本文不会介绍软件的

xushu_me的博客 6万+

wxPython学习笔记 TextCtrl控件

参考引用: WxPython教程 TextCtrl控件 1.概述 可输入字符的文本框 构造函数 TextCtrl类的构造函数形式如下 : wx.TextCtrl(parent, id, value, pos, size, style) parent id value pos size style : style 样式(style)参数接受一个或多个常量,用 | 分隔,如: wx.TE...

bmzk123的博客 3370

基于Playwright和反爬虫规避技术的雪球股票讨论数据采集方案

随着量化投资和社交投资的兴起,雪球作为中国领先的投资社交平台,其用户讨论数据成为研究市场情绪的重要来源。本文将详细介绍如何使用最新的Playwright技术和反爬虫规避策略,构建一个高效、稳定的雪球股票讨论爬虫系统。本文详细介绍了基于Playwright的雪球股票讨论爬虫实现方案,涵盖了从基础配置到高级反爬虫策略的各个方面。AI驱动的反爬虫对抗更智能的请求调度算法区块链技术在数据溯源中的应用联邦学习在数据采集中的运用。

2201_76125261的博客 1009

嵌入式开发之瑞芯微RK356x--基本环境搭建

嵌入式环境搭建

NexyHO的博客 617

wxPython学习(7.高级窗口)

1.分隔窗口 分隔窗口就是将窗口分成两部分,即左右或上下两部分。 例:将整体分为左右两个窗口,右窗口又分为上下两窗口,两窗口之间的分隔线是可以拖动的,称为“窗框” wx.SplitterWindow 中常用的方法有: (1)SplitVertically(window1, window2, sashPosition=0)。 设置左右布局的分隔窗口,window1 为左窗口,window2 为右...

qq_35634418的博客 2675

YOLOv8实战教程:从模型训练到改进的全流程指南

回顾这段YOLOv8的实战历程,从最初的模型训练到后来的各种改进尝试,我深刻体会到目标检测技术的魅力与挑战。YOLOv8作为一款优秀的框架,不仅易用性强,而且具备很强的可扩展性,让我能在其基础上不断创新。未来,我计划在以下几个方向继续探索:一是将YOLOv8与多模态技术结合,尝试实现图像与文本的联合目标检测;二是深入研究自监督学习在YOLOv8中的应用,减少对标注数据的依赖;三是探索YOLOv8在更广泛场景的部署,如机器人、自动驾驶等。

LXY_LOVE36的博客 279

wxpython 控件 有哪些

WxPython控件介绍 wxPython是一个流行的Python GUI库,允许开发者轻松创建跨平台的桌面应用程序。在wxPython中,控件是用户界面元素的基本构建块,如按钮、文本框、标签等。本文将介绍一些常用的wxPython控件,并提供示例代码,帮助读者更好地理解和应用这些控件。 常用控件概述 以下是wxPytho...

weixin_41448823的博客 425

最新Python爬虫实战(入门爬虫篇)——案例8:图书网畅销榜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过 Python 爬虫技术,成功实现了对图书网畅销榜多页数据的批量爬取与 Excel 保存。代码采用模块化设计,包含分页参数构造、API 接口请求、JSON 数据解析、Excel 数据持久化等完整流程;通过配置模拟浏览器的请求头,有效规避基础反爬策略,保证请求的稳定性。整个爬虫逻辑遵循 “分页遍历 → 接口请求 → JSON 解析 → 提取图书信息 → 保存到 Excel” 的标准流程,与电商类接口爬取范式高度一致。

努力让自己发光,对的人才能迎着光而来 29万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

wxPython 实践(二)基础控件

wxPython API包含一个wx.Choice类,其对象也是一个下拉列表,它是永久只读的。尽管控件可以通过指定屏幕坐标的位置来手动放置在面板上,但建议使用一个合适的布局方案,在 wx.Python 中称为 sizer ,以便更好地控制放置和解决大小调整的问题。一个框架中的 Notebook 对象有一个或多个标签(称为页),每个标签有一个显示控件布局的面板。一个 wx.RadioBox 在一个静态框中放置了一组互斥的按钮,该组中的每个按钮都从 List 对象 choices 获取标签。

cliffordl的专栏 973

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

wxPython常用控件--wx.Font,wx.StaticText,wx.StaticBitmap,wx.Button,wx.TextCtrl

关注公众号“码农帮派”,查看更多系列技术文章: wxPython各种控件用法官方手册:http://xoomer.virgilio.it/infinity77/wxPython/widgets.html (0)字体,wx.Font, 构造函数: """ __init__(self, int pointSize, int family, int style, int...

天马行空的专栏 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

wxPython界面开发总结

本文总结了快速学习wxPython界面编程的知识要点

阿丹的彩蛋 2万+

wxPython学习(6.控件)

1.静态文本和按钮 wxPython中静态文本类是wx.StaticText,可以显示文本。wxPython中的按钮主要有三个:wx.Button、wx.BitmapButton和wx.ToggleButton。 wx.Button:是普通按钮 wx.BitmapButton:是带有图标按钮 wx.ToggleButton:能进行两种状态切换的按钮 StaticText构造函数的参数 pare...

qq_35634418的博客 1781

wxpython控件隐藏_wxPython树控件

1、树控件树(tree)是一种通过层次结构展示信息的控件,如下图所示是树控件示例,左窗口中是树控件,在wxPython中树控件类是wx.TreeCtrl。wx.TreeCtrl中一个常用的方法有:AddRoot(text, image=-1, selImage=-1, data=None)。添加根节点,text参数根节点显示的文本;image参数是该节点未被选中时的图片索引,wx.TreeCtrl...

weixin_39727976的博客 334

wxpython界面开发实例_python图形界面开发之wxPython树控件使用方法详解

wxPython树控件介绍树(tree)是一种通过层次结构展示信息的控件,如下图所示是树控件示例,左窗口中是树控件,在wxPython中树控件类是wx.TreeCtrl。wx.TreeCtrl常用的方法有AddRoot(text, image=-1, selImage=-1, data=None)。添加根节点,text参数根节点显示的文本;image参数是该节点未被选中时的图片索引,wx.Tree...

weixin_39897746的博客 477

一问一答学习PyQT6,对比WxPython和PyQt6的差异

在我的基于WxPython的跨平台框架完成后,对WxPython的灵活性以及强大功能有了很深的了解,在跨平台的桌面应用上我突然对PyQt6的开发也感兴趣,于是准备了开发环境学习PyQt 6,并对比下WxPython的差异来进行深入的了解,发现它们很多理念和做法是如此的类似。 1、pyqt6都有那些布局控件? PyQt6 提供了多种布局控件,帮助开发者轻松地将界面元素排列在窗口中。对比发现它们和W...

weixin_36294852的博客 134

wxpython使用方法_python图形界面开发之wxPython树控件使用方法详解

wxPython树控件介绍树(tree)是一种通过层次结构展示信息的控件,如下图所示是树控件示例,左窗口中是树控件,在wxPython中树控件类是wx.TreeCtrl。wx.TreeCtrl常用的方法有AddRoot(text, image=-1, selImage=-1, data=None)。添加根节点,text参数根节点显示的文本;image参数是该节点未被选中时的图片索引,wx.Tree...

weixin_39747087的博客 677

wxPython常用控件--wx.RadioButton,wx.CheckBox,wx.Choice,wx.Slider,wx.SpinCtrl,wx.Timer,wx.Dialog

关注公众号“码农帮派”,查看更多系列技术文章: wxPython各种控件用法官方手册:http://xoomer.virgilio.it/infinity77/wxPython/widgets.html (5)单选项,wx.RadioButton,构造函数: """ __init__(self, Window parent, int id=-1, String l...

天马行空的专栏 1万+

wxpython网站_wxpython学习笔记

一、简介wxPython是Python编程语言的一个GUI工具箱。他使得Python程序员能够轻松的创建具有健壮、功能强大的图形用户界面的程序。它是Python语言对流行的wxWidgets跨平台GUI工具库的绑定。而wxWidgets是用C++语言写成的。和Python语言与wxWidgets GUI工具库一样,wxPython是开源软件。这意味着任何人都可以免费地使用它并且可以查看和修改它的源...

weixin_39806288的博客 174

wxPython Slider类

滑块呈现一个槽在一个句柄用户可以移动。这是一个典型的小工具用来控制有界值。在沟槽的句柄位置相当于控件的上限和下限之间的整数。 wxPython的API包含wx.Slider类。它提供了相同的功能的滚动条。滑块提供了一个方便的方式来处理由滑块指定 wx.EVT_SLIDER 事件绑定拖动句柄。 wx.Slider构造函数的定义采用以下八个参数- wx.Slider(parent, ...

618
上一篇: 【文献研究】车辆路径问题静态合作博弈的数学模型及算法实现
下一篇: wxpython设计GUI:解决comboBox控件在界面上不显示值的问题
草莓仙生
博客等级 码龄8年 2034粉丝 224原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草莓仙生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值