2

私はいくつかの単純な wxpython GUI を持っています。ボタンをクリックすると、別のスレッドでいくつかの io タスクを実行し (GUI をブロックしないようにするため)、io スレッドの実行中にそれに応じて GUI を更新します (たとえば、更新) io スレッドから:"[io タスクのパーセンテージ完了]%") へのラベル。

ただし、これが機能する場合もあれば、例外がスローされる場合もあります。

The program 'python2.7' received an X Window System error.
This probably reflects a bug in the program.
The error was 'RenderBadPicture (invalid Picture parameter)'.
  (Details: serial 14127 error_code 163 request_code 149 minor_code 7)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

--sync コマンドを使用してプログラムを実行すると、次のエラーが発生します。

[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called

GUI を作成したスレッドとは別のスレッドから GUI スレッドを更新することは許可されていないことを読みましたが、その場合、この単純なタスクをどのように達成するのですか? 別のスレッドから GUI を更新します。

ありがとう

4

1 に答える 1

-1

このトピックに関するスレッドはすでにたくさんあり、wxpythonwikiで十分にカバーされています。wx.CallAfterを検索します。

于 2012-12-27T03:56:46.947 に答える