你好 StackExchange 社区,
\n首先,你们给了我很大的帮助,非常感谢。第一次提问:
\n我目前正在编写一个 PyQt GUI 应用程序,我发现它在 Windows 系统上崩溃了,而且它在我家里的机器上运行时也给我带来了段错误(都是 linux mint 17)。经过一些研究,我意识到我可能创建了一个线程不安全的 GUI,因为我有几个互相调用其他方法的对象。
\n\n\n来自另一个 stackoverflow 问题:GUI 小部件只能从主线程访问,即调用 QApplication.exec() 的线程。从任何其他线程 \xe2\x80\x93 访问 GUI 小部件,您对 self.parent() \xe2\x80\x93 的调用正在执行的操作是未定义的行为,在您的情况下,这意味着崩溃。
\n来自 Qt 文档:虽然 QObject 是可重入的,但 GUI 类(尤其是 QWidget 及其所有子类)是不可重入的。它们只能在主线程中使用。如前所述,还必须从该线程调用 QCoreApplication::exec()。
\n
所以最后,我认为我应该只使用信号槽系统来做到这一点。
\n接下来的事情是,我在示例代码中重新创建这种线程不安全行为时遇到问题。Qt 文档说 QObject 存在于不同的线程中。这意味着,以下 Qt 应用程序应该是线程不安全的(如果我正确理解的话)。
\nfrom PyQt4 import QtGui\nimport sys\n\nclass TestWidget(QtGui.QWidget):\n def __init__(self,string):\n super(TestWidget,self).__init__()\n self.button = QtGui.QPushButton(string,parent=self)\n self.button.clicked.connect(self.buttonClicked)\n \n # just to …Run Code Online (Sandbox Code Playgroud) 我想知道元组解包是否可以用于“索引从...到”类型的样式,因此使用inds = (a,b),M[*inds]会导致M[a:b].
我经常有一些元组,其中包含我用来将数据分割成一些有趣的子集的索引,并且我认为像上面建议的那样会很方便。有没有办法做到这一点?
感谢您的意见