gpt4 book ai didi

python - 使用Remove()或Clear()后wxPython TextCtrl不聚焦

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:09 26 4
gpt4 key购买 nike

因此,我正在为我的 HSC 制定主要项目,其中包含三个银行计算器。

在进行计算之前,我从各种 TextCtrl 收集数据。对于我的储蓄计算器,我有两个 TextCtrl,一个用于年份,一个用于月份。为了使程序更直观,我希望相应的 TextCtrl 的值表示“年”或“月”,而不是我的 StaticText 表示“储蓄期限(年 - 月)”。

但是,单击 TextCtrl 后,它会清除框中的内容,但在第一次单击后我无法再次关注该框。即使该值为空,清除功能仍会继续运行,并且重新聚焦的唯一方法是通过 Tab 键切换到该字段。代码片段如下:

self.SavingLabel4 = wx.StaticText(self.Savings_Pane, -1, "          Savings Term (Years - Months)")
self.Savings_TermYears = wx.TextCtrl(self.Savings_Pane, -1, "Years")
self.Savings_TermYears.Bind(wx.EVT_LEFT_DOWN, self.ClearText123)

def ClearText123(self, event):
print self.Savings_TermYears.GetValue() # print the value of the text control
if self.Savings_TermYears.GetValue != '': # if the control isn't blank, clear it
self.Savings_TermYears.Clear()
print 'Cleared' # outputs that the clear function was used (just for testing)

最佳答案

这是一个相对比较老套的解决方案,但它适用于这种情况。发生的情况是,一旦您单击,如果文本是“Years”,那么它会清除整个 TextCtrl,然后重新获得焦点,最后从 TextCtrl 取消该单击事件的绑定(bind)(因为不再需要):

def ClearText123(self, event):
if self.Savings_TermYears.GetValue() == 'Years': # if the control isn't blank, clear it
self.Savings_TermYears.Clear()
self.Savings_TermYears.Unbind(wx.EVT_LEFT_DOWN)
self.Savings_TermYears.SetFocus()

关于python - 使用Remove()或Clear()后wxPython TextCtrl不聚焦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16459306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com