在wxPython类中如何获取静态文本(或任意)控件的值?
在wxPython中获取控件值的方法
针对你的问题,我来分情况说明不同控件的取值方式:
1. 静态文本控件(wx.StaticText)
静态文本控件的内容是通过**标签(Label)**来设置的,所以获取它的内容要用GetLabel()方法,而不是GetValue()(这个方法是给输入类控件设计的)。
结合你给出的代码片段,比如你定义的self.xtitle是静态文本,要获取它的内容可以这样写:
title_content = self.xtitle.GetLabel() print(title_content) # 会输出"Narrative Setup"
2. 其他常用控件的取值方法
不同类型的控件取值方法略有不同,这里列几个常见的:
- 文本输入框(wx.TextCtrl):用
GetValue()获取全部文本,或者GetLineText(line_num)获取指定行的文本# 假设你有一个wx.TextCtrl实例叫self.input_text input_content = self.input_text.GetValue() - 复选框(wx.CheckBox):
GetValue()返回布尔值,表示是否被选中is_checked = self.check_box.GetValue() - 单选按钮(wx.RadioButton):同样用
GetValue()判断是否选中 - 下拉选择框(wx.Choice/wx.ComboBox):
GetStringSelection()获取选中的文本内容GetSelection()获取选中项的索引(从0开始)
selected_text = self.choice_box.GetStringSelection() selected_index = self.choice_box.GetSelection()
示例:在你的WizardPage类中添加取值方法
你可以在WizardPage类里新增一个方法来获取静态文本或者其他控件的值,比如:
class WizardPage(wx.Panel): """""" #---------------------------------------------------------------------- def __init__(self, parent, title=None): """Constructor""" wx.Panel.__init__(self, parent) if title: if title == "Narrative Setup": self.sizer1 = wx.BoxSizer(wx.VERTICAL) self.SetSizer(self.sizer1) self.xtitle = wx.StaticText(self, -1, title) self.xtitle.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD)) # 补全你代码里的Font设置 self.sizer1.Add(self.xtitle, 0, wx.ALL, 5) # 新增方法获取静态文本内容 def get_title_content(self): return self.xtitle.GetLabel()
这样你在外部调用这个方法就能拿到静态文本的值了。
内容的提问来源于stack exchange,提问作者Steve W.




