【问题标题】:create a command terminal like window using wx controls使用 wx 控件创建类似窗口的命令终端
【发布时间】:2014-09-27 08:02:12
【问题描述】:

我正在尝试创建一个类似窗口的命令终端..我使用了以下代码..问题是它将命令提示符设置为可编辑的“>>>”。

我想要带有固定“>>>”的窗口,光标等待命令...现在的问题是用户可以轻松删除“>>>”,因为它是一个简单的文本..

有什么方法可以在 we.textctrl 或任何其他控件中修复这段文本。

类 MyFrame(wx.Frame):

def __init__(self, parent, title):
       wx.Frame.__init__(self, parent, title=title, size=(400,400))
       self.SetPosition(wx.Point(0,0))                           
       self.cmdArea = wx.TextCtrl(self, style=wx.TE_MULTILINE)          
       self.cmdArea.SetValue(">>>")                
       self.Show(True)

【问题讨论】:

    标签: python wxwidgets wxtextctrl


    【解决方案1】:

    捕获退格事件,然后检查前面的字符是否为“>>>”。如果是这样,请忽略该事件。

    【讨论】:

    • ...如果用户连续输入两个以上的> 怎么办?我要在这里暗中捅刀,说 OP 不想无缘无故地激怒用户。
    • 显然不是一个完整的解决方案,但它让他指向一个。在行首创建逻辑来检测 >>> 并不难。正则表达式是一种方式。
    • 你能帮我举个例子吗
    • Creating logic to detect >>> at the beginning of a line isn't that hard. Regular expressions is one way. 我对您的回答的问题更为根本;至于输入是由 shell 内的程序生成的,还是由 shell 本身生成的,还是由用户生成的,这是不可知的。如果允许多行字符串(任何体面的 shell 都应该能够处理),那么您的解决方案仍然存在缺点。基本上,您是在建议一个愚蠢的终端实现,can lead to some pretty insidious issues.
    • 听起来您对该域已经足够熟悉,可以提供更完整和可用的答案。
    【解决方案2】:

    如果您在 Google 上搜索“wxwindows 的终端小部件”,您应该会找到 this one

    不过,它不附带 Python 绑定。所以你必须自己动手。

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 1970-01-01
      • 2013-12-25
      • 2016-01-29
      • 2023-01-08
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多