为什么我的wxFrame不能正常关闭?

时间:2015-06-23 03:12:10

标签: python-2.7 wxpython exit

我正在尝试构建一个基本的消息系统,但是我在这个过程中遇到了一个主要障碍。如果没有响应我就无法关闭窗口,我不得不在任务管理器中将其关闭。从我在网上看到的,听起来我需要关闭sys.exit(0)以退出所有线程和连接。我已经坚持这个问题好几天所以我真的很感激答案和解释为什么它不起作用!问题的关键在于@IBOutlet weak var stack: UILabel! @IBOutlet weak var plus: UIButton! @IBAction func sum(sender: AnyObject) { var stackTitle = stack.text var numberOfSpaces = stackTitle!.CanICallSomethingHereToHelp:) var i:Int for i = 1; i < numberOfSpaces; ++i{ operate(plus) } } 功能。只要您有一个接受连接的基本服务器,它就可以运行。谢谢!

<?php
$query = "select text from mytable where id=".$_POST["id"];

$result = mysql_query($query);

$row=mysql_fetch_row($result);    
?>

<table>
<tr class="text-center border">
     <td><?php echo $row[0]; ?></td>
</tr>
<tr class="text-center border">
     <td></td>
</tr>
<tr class="text-center border">
     <td></td>
</tr>
</table>

这是一个应该使用它的基本服务器程序(我无法测试它,但它与真实的非常相似)

close_window()

1 个答案:

答案 0 :(得分:1)

您需要等待线程结束。否则它可能会使脚本挂起。为什么?那么线程与GUI线程是分开的,所以它不会因为你关闭你的wxPython应用程序而被杀死。以下是我的建议:

def close_window(self, event):
    self.Thread1.join()
    self.Destroy()

这使得脚本在关闭应用程序之前等待线程完成。如果您希望框架消失,则应在self.Hide()之前调用join。另一种方法是在你的线程中放入一些逻辑,你可以向它发送一条消息,告诉它应用程序正在关闭,因此线程需要中止。

您应该查看以下Stack答案: