Hi folks.<br><br>I&#39;ve got a new question. After recongnising that the python bindings for curses are not fully capable of displaying the unicode-chars I decided to drop curses and shifted to urwid. Now I&#39;ve got some basic questions in the matter of urwid and twisted. As you may know I&#39;m using a mvc-pattern and I have not discovered a way to combine _and_ start urwid with twisted yet. Maybe someone who already worked with urwid can give me a small hint.<br>
<br>Code:<br><br><a href="http://codepad.org/0Hlvmp1b">http://codepad.org/0Hlvmp1b</a><br><br><pre><span class="k">class</span> <span class="nc">Input</span><span class="p">:</span><br>    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">term</span><span class="p">):</span><br>
        <span class="bp">self</span><span class="o">.</span><span class="n">term</span> <span class="o">=</span> <span class="n">term</span><br>        <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">term</span><span class="o">.</span><span class="n">get_cols_rows</span><span class="p">()</span><br>
        <span class="bp">self</span><span class="o">.</span><span class="n">input</span> <span class="o">=</span> <span class="n">urwid</span><span class="o">.</span><span class="n">Edit</span><span class="p">()</span><br>
        <span class="bp">self</span><span class="o">.</span><span class="n">filler</span> <span class="o">=</span> <span class="n">urwid</span><span class="o">.</span><span class="n">Filler</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">input</span><span class="p">)</span><br>
        <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filler</span><span class="o">.</span><span class="n">render</span><span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span> <span class="n">focus</span><span class="o">=</span><span class="bp">True</span> <span class="p">)</span><br>
        <span class="bp">self</span><span class="o">.</span><span class="n">term</span><span class="o">.</span><span class="n">draw_screen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="p">)</span><br>
        <span class="n">reactor</span><span class="o">.</span><span class="n">addReader</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><br><br>    <span class="k">def</span> <span class="nf">fileno</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span><br>
        <span class="k">return</span> <span class="mf">0</span><br><br>    <span class="k">def</span> <span class="nf">logPrefix</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span><br>        <span class="k">return</span> <span class="s">&#39;CursesClient&#39;</span><br>
<br>    <span class="k">def</span> <span class="nf">doRead</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span><br>        <span class="n">keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">term</span><span class="o">.</span><span class="n">get_input_nonblocking</span><span class="p">()</span><br>
        <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">:</span><br>            <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&#39;window resize&#39;</span><span class="p">:</span><br>
                <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">term</span><span class="o">.</span><span class="n">get_cols_rows</span><span class="p">()</span><br>
            <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&#39;enter&#39;</span><span class="p">:</span><br>                <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">input</span><span class="o">.</span><span class="n">get_edit_text</span><span class="p">()</span><br>
                <span class="n">controller</span><span class="o">.</span><span class="n">sendMsg</span><span class="p">(</span><span class="s">&#39;dev&#39;</span><span class="p">,</span><span class="n">text</span><span class="p">)</span><br>
                <span class="bp">self</span><span class="o">.</span><span class="n">input</span><span class="o">.</span><span class="n">set_edit_text</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">)</span><br>
            <span class="k">else</span><span class="p">:</span><br>                <span class="bp">self</span><span class="o">.</span><span class="n">filler</span><span class="o">.</span><span class="n">keypress</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span><br>
    <br><span class="n">term</span> <span class="o">=</span> <span class="n">urwid</span><span class="o">.</span><span class="n">raw_display</span><span class="o">.</span><span class="n">Screen</span><span class="p">()</span><br>
<span class="n">term</span><span class="o">.</span><span class="n">run_wrapper</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">Input</span><span class="p">(</span><span class="n">term</span><span class="p">))</span><br>
<br><br><br><span class="n">Traceback</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">last</span><span class="p">):</span><br>  <span class="n">File</span> <span class="s">&quot;./keckz.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mf">44</span><span class="p">,</span> <span class="ow">in</span> <span class="o">&lt;</span><span class="n">module</span><span class="o">&gt;</span><br>
    <span class="n">f</span><span class="o">.</span><span class="n">startKeckz</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="n">f</span><span class="o">.</span><span class="n">view</span><span class="p">)</span><br>
  <span class="n">File</span> <span class="s">&quot;./keckz.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mf">38</span><span class="p">,</span> <span class="ow">in</span> <span class="n">startKeckz</span><br>
    <span class="n">controllerKeckz</span><span class="o">.</span><span class="n">Kekzcontroller</span><span class="p">(</span><span class="n">View</span><span class="p">)</span><span class="o">.</span><span class="n">startConnection</span><span class="p">(</span><span class="n">host</span><span class="p">,</span><span class="mf">23002</span><span class="p">)</span><br>
  <span class="n">File</span> <span class="s">&quot;/home/arch/keckz/trunk/controllerKeckz.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mf">13</span><span class="p">,</span> <span class="ow">in</span> <span class="n">__init__</span><br>
    <span class="bp">self</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">interface</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><br>
  <span class="n">File</span> <span class="s">&quot;/home/arch/keckz/trunk/urwid_cli.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mf">21</span><span class="p">,</span> <span class="ow">in</span> <span class="n">__init__</span><br>
    <span class="bp">self</span><span class="o">.</span><span class="n">term</span><span class="o">.</span><span class="n">run_wrapper</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">Input</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">term</span><span class="p">))</span><br>
  <span class="n">File</span> <span class="s">&quot;/usr/lib/python2.6/site-packages/urwid/raw_display.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mf">212</span><span class="p">,</span> <span class="ow">in</span> <span class="n">run_wrapper</span><br>
    <span class="k">return</span> <span class="n">fn</span><span class="p">()</span><br>  <span class="n">File</span> <span class="s">&quot;/home/arch/keckz/trunk/urwid_cli.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mf">21</span><span class="p">,</span> <span class="ow">in</span> <span class="o">&lt;</span><span class="k">lambda</span><span class="o">&gt;</span><br>
    <span class="bp">self</span><span class="o">.</span><span class="n">term</span><span class="o">.</span><span class="n">run_wrapper</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">Input</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">term</span><span class="p">))</span><br>
  <span class="n">File</span> <span class="s">&quot;/home/arch/keckz/trunk/urwid_cli.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mf">55</span><span class="p">,</span> <span class="ow">in</span> <span class="n">__init__</span><br>
    <span class="bp">self</span><span class="o">.</span><span class="n">term</span><span class="o">.</span><span class="n">draw_screen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="p">)</span><br>
  <span class="n">File</span> <span class="s">&quot;/usr/lib/python2.6/site-packages/urwid/raw_display.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mf">579</span><span class="p">,</span> <span class="ow">in</span> <span class="n">draw_screen</span><br>
    <span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">palette</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">a</span><span class="p">),</span> <span class="sb">`a`</span><br>
<span class="ne">AssertionError</span><span class="p">:</span> <span class="bp">None</span><br><br></pre><br>