我想将信息文本打印到程序本身指定的TextCtrl
窗口小部件,但不知道如何操作。我只知道如何“手动”执行此操作(假设分别执行self.text_ctrl_5.SetLabel("blah")
或self.text_ctrl_27.SetLabel("blah")
的程序的一部分),但我不知道如何指示程序自己执行此操作,我的意思是如果条件A - >然后专门打印到text_ctrl_5,如果条件B - >然后专门打印到text_ctrl_27。
对于2-3个位置,我可以扩展行代码(为每个text_ctrl创建一个专用的打印指令),但对于16或24个条目,我正在寻找一些紧凑的解决方案。
假设我要显示这两个文本位置,它们只是更大窗口框架的一部分,我如何指示程序在特定位置打印?假设今天是星期一,那么在text_ctrl_1上打印“mon”,如果是星期二,则在text_ctrl_2上打印“tue”? (一周中的日期条件只是例如,不是实际需要;打印的标签在不同的位置也可能是相同的(或不是))
self.text_ctrl_1 = wx.TextCtrl(self, wx.ID_ANY, "")
self.text_ctrl_2 = wx.TextCtrl(self, wx.ID_ANY, "")
答案 0 :(得分:1)
如果您在一个屏幕上有16-24个文本框,那么可能是时候重新考虑您的用户界面了。简单几乎总是更好。我不明白为什么你不能只将信息打印到一个或两个多行文本框。但无论如何,我认为用字典做这种事情最简单的方法。这是一个例子:
import random
import wx
########################################################################
class MyPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.text_ctrls = {}
sizer = wx.BoxSizer(wx.VERTICAL)
for i in range(12):
txt = wx.TextCtrl(self)
self.text_ctrls[i] = txt
sizer.Add(txt, 0, wx.ALL|wx.EXPAND, 5)
btn = wx.Button(self, label="Update TextCtrls")
btn.Bind(wx.EVT_BUTTON, self.onButton)
sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
self.SetSizer(sizer)
#----------------------------------------------------------------------
def onButton(self, event):
""""""
ctrls = self.text_ctrls.keys()
choices = ["Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun"]
for i in range(3):
ctrl = random.choice(ctrls)
self.text_ctrls[ctrl].SetValue(random.choice(choices))
########################################################################
class MyFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Test", size=(800,600))
panel = MyPanel(self)
self.Show()
#----------------------------------------------------------------------
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
app.MainLoop()
基本思想是创建一系列文本控件并将它们添加到字典中。然后在更新按钮中,我们随机选择一周中的某一天应用于随机选择的文本控件。