嘿大家使用Python我已经绑定了单选按钮,当点击 TextCtrl 被调用但是在我输入TextCtrl后我无法获取已经输入的字符串,我的代码就像这样
def A(self,event):
radiobut = wx.RadioButton(self.nameofframe, label = 'Opt-1', pos = (10,70),size= (90,-1))
self.Bind(wx.EVT_RADIOBUTTON,self.B,radiobut)
def B(self,event):
Str1 = wx.TextCtrl(self.nameofframe,pos = (100,70), size=(180,-1))
print Str1.GetValue()
有谁能告诉我问题出在哪里。为什么我不能打印出来?
答案 0 :(得分:2)
Str1.GetValue()将为空,因为当单击单选按钮时,您正在创建一个新的TextCtrl,然后立即获取其值,它将为空,因为用户尚未在其中键入任何内容。 / p>
答案 1 :(得分:1)
这是通常的方式。
创建框架时创建文本控件。将指针(对不起C ++ - 无论你用python做什么)保存到文本控件并将方法绑定到EVT_TEXT_ENTER事件。当事件触发时,您可以阅读用户键入的内容。
如果要控制文本控件何时何时不可见,请使用hide()方法。
答案 2 :(得分:1)
单选按钮usually位于一个组中,一个或多个多个,并且至少应该单击一个,但您只有一个按钮。在这种情况下通常使用的是复选框CheckBox
。
在此示例中,当TextCtrl
被激活时,它会打印在CheckBox
中输入的文字:
#!python
# -*- coding: utf-8 -*-
import wx
class MyFrame(wx.Frame):
def __init__(self, title):
super(MyFrame, self).__init__(None, title=title)
panel = wx.Panel(self)
self.check = wx.CheckBox(panel, label='confiurm?', pos =(10,70), size=(90,-1))
self.text = wx.TextCtrl(panel, pos=(100,70), size=(180,-1))
# disable the button until the user enters something
self.check.Disable()
self.Bind(wx.EVT_CHECKBOX, self.OnCheck, self.check)
self.Bind(wx.EVT_TEXT, self.OnTypeText, self.text)
self.Centre()
def OnTypeText(self, event):
'''
OnTypeText is called when the user types some string and
activate the check box if there is a string.
'''
if( len(self.text.GetValue()) > 0 ):
self.check.Enable()
else:
self.check.Disable()
def OnCheck(self, event):
'''
Print the user input if he clicks the checkbox.
'''
if( self.check.IsChecked() ):
print(self.text.GetValue())
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame('Example')
self.frame.Show()
return True
MyApp(False).MainLoop()
这是它的工作原理: