-1

さて、wxPython で書かれたアプリケーションを手に入れました。関数にバインドされたボタンがあり、その関数の一部では、アプリケーションが kate でテキスト ファイルを開く必要があります。

そのため、ファイルは gedit で開き、正常に動作しますが、アプリケーションを見ると、ボタンがまだ押されていて、フリーズしているように見えます。数秒後、アプリケーションはグレー表示になり、ハングまたはクラッシュします。編集ウィンドウを閉じると、フリーズが解除され、再び機能し始めます。

テキスト ファイルを開くと、アプリがハングするのはなぜですか? このコードを使用してテキストファイルに書き込み、kate で開きます。

file = open("encryptedText.txt", "w")
file.write(encryptedStr)
file.close()
os.system("kate encryptedText.txt")

ありがとう!


申し訳ありませんが、インデントは問題ではありません。投稿のフォーマットをめちゃくちゃにしました。端末に表示されるメッセージは次のとおりです。

'import sitecustomize' failed; use -v for traceback
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
kate(13256)/kate-filetree KateFileTreePluginView::KateFileTreePluginView: BEGIN: mw: Kate::MainWindow(0xeab140)
kate(13256)/kate-filetree ProxyItem::ProxyItem: ProxyItem(0x1219ad0,0x0,-1,QObject(0x0) ,"m_root")
kate(13256)/kate-filetree ProxyItem::ProxyItem: ProxyItem(0x1219db0,0x0,-1,QObject(0x0) ,"Untitled")
kate(13256)/kate-filetree KateFileTreeModel::documentOpened: before add: ProxyItem(0x1219db0,0x0,-1,KateDocument(0x103da90) , "Untitled" )
kate(13256)/kate-filetree KateFileTreeModel::setupIcon: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::setupIcon: END!
kate(13256)/kate-filetree KateFileTreeModel::handleInsert: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::handleInsert: empty item
kate(13256)/kate-filetree ProxyItem::addChild: added ProxyItem(0x1219db0,0x1219ad0,0,KateDocument(0x103da90) , "Untitled" )   to ProxyItemDir(0x1219ad0,0x0,-1,"m_root", children:1)
kate(13256)/kate-filetree KateFileTreeModel::documentOpened: after add: ProxyItem(0x1219db0,0x1219ad0,0,KateDocument(0x103da90) , "Untitled" )
kate(13256)/kate-filetree KateFileTreeProxyModel::KateFileTreeProxyModel: BEGIN!
kate(13256)/kate-filetree KateFileTreePluginView::setListMode: BEGIN
kate(13256)/kate-filetree KateFileTreePluginView::setListMode: treeMode
kate(13256)/kate-filetree KateFileTreePluginView::setListMode: END
kate(13256)/kate-filetree KateFileTreePluginView::viewChanged: BEGIN!
kate(13256)/kate-filetree KateFileTreePluginView::viewChanged: BEGIN!
kate(13256)/kate-filetree KateFileTreeProxyModel::docIndex: !
kate(13256)/kate-filetree KateFileTreeModel::docIndex: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::docIndex: END!
kate(13256)/kate-filetree KateFileTreePluginView::viewChanged: selected doc= KateDocument(0x103da90) QModelIndex(0,0,0x1214690,KateFileTreeProxyModel(0x126b040) )
kate(13256)/kate-filetree KateFileTreePluginView::viewChanged: display= "Untitled"
kate(13256)/kate-filetree KateFileTreeModel::documentActivated: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::documentActivated: adding viewHistory ProxyItem(0x1219db0,0x1219ad0,0,KateDocument(0x103da90) , "Untitled" )
kate(13256)/kate-filetree KateFileTreeModel::updateBackgrounds: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::updateBackgrounds: END!
kate(13256)/kate-filetree KateFileTreeModel::documentActivated: END!
kate(13256)/kate-filetree KateFileTree::slotCurrentChanged: current: QModelIndex(0,0,0x1214690,KateFileTreeProxyModel(0x126b040) )  previous: QModelIndex(-1,-1,0x0,QObject(0x0) )
kate(13256)/kate-filetree KateFileTree::slotCurrentChanged: got doc, setting prev: QModelIndex(0,0,0x1214690,KateFileTreeProxyModel(0x126b040) )
kate(13256)/kate-filetree KateFileTreePluginView::viewChanged: END!
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: change to unnamed item
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: ProxyItem(0x1219db0,0x1219ad0,0,KateDocument(0x103da90) , "Untitled" )
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: "Untitled" -> "Untitled"
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: removing brush ProxyItem(0x1219db0,0x1219ad0,0,KateDocument(0x103da90) , "Untitled" )
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: removing view history ProxyItem(0x1219db0,0x1219ad0,0,KateDocument(0x103da90) , "Untitled" )
kate(13256)/kate-filetree KateFileTreeModel::handleNameChange: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::handleNameChange: bogus name change
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: END!
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: ProxyItem(0x1219db0,0x1219ad0,0,KateDocument(0x103da90) , "Untitled" )
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: "Untitled" -> "/home/harvey/Documents/Python Development/encryptedText.txt"
kate(13256)/kate-filetree KateFileTreeModel::handleNameChange: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::handleNameChange: removing ProxyItem(0x1219db0,0x1219ad0,0,KateDocument(0x103da90) , "/home/harvey/Documents/Python Development/encryptedText.txt" )   from ProxyItemDir(0x1219ad0,0x0,-1,"m_root", children:1)
kate(13256)/kate-filetree KateFileTree::slotCurrentChanged: current: QModelIndex(-1,-1,0x0,QObject(0x0) ) previous: QModelIndex(0,0,0x1214690,KateFileTreeProxyModel(0x126b040) )
kate(13256)/kate-filetree ProxyItem::remChild: remove ProxyItem(0x1219db0,0x1219ad0,0,KateDocument(0x103da90) , "/home/harvey/Documents/Python Development/encryptedText.txt" )   from ProxyItemDir(0x1219ad0,0x0,-1,"m_root", children:1)
kate(13256)/kate-filetree KateFileTreeModel::handleEmptyParents: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::handleEmptyParents: parent ProxyItemDir(0x1219ad0,0x0,-1,"m_root", children:0) grandparentProxyItemDir(0x0)
kate(13256)/kate-filetree KateFileTreeModel::setupIcon: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::setupIcon: END!
kate(13256)/kate-filetree KateFileTreeModel::handleNameChange: inserting ProxyItem(0x1219db0,0x0,0,KateDocument(0x103da90) , "/home/harvey/Documents/Python Development/encryptedText.txt" )
kate(13256)/kate-filetree KateFileTreeModel::handleInsert: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::handleInsert: creating a new root
kate(13256)/kate-filetree ProxyItem::ProxyItem: ProxyItem(0x14d5460,0x0,-1,QObject(0x0) ,"/home/harvey/Documents/Python Development")
kate(13256)/kate-filetree KateFileTreeModel::handleInsert: add ProxyItemDir(0x14d5460,0x0,-1,"/home/harvey/Documents/Python Development", children:0) to m_root
kate(13256)/kate-filetree ProxyItem::addChild: added ProxyItem(0x14d5460,0x1219ad0,0,QObject(0x0) ,"/home/harvey/Documents/Python Development") toProxyItemDir(0x1219ad0,0x0,-1,"m_root", children:1)
kate(13256)/kate-filetree KateFileTreeModel::handleInsert: attempting to merge some existing roots
kate(13256)/kate-filetree KateFileTreeModel::handleInsert: adding ProxyItem(0x1219db0,0x0,0,KateDocument(0x103da90) , "/home/harvey/Documents/Python Development/encryptedText.txt" )   to ProxyItemDir(0x14d5460,0x1219ad0,0,"/home/harvey/Documents/Python Development", children:0)
kate(13256)/kate-filetree ProxyItem::addChild: added ProxyItem(0x1219db0,0x14d5460,0,KateDocument(0x103da90) , "/home/harvey/Documents/Python Development/encryptedText.txt" )   to ProxyItemDir(0x14d5460,0x1219ad0,0,"/home/harvey/Documents/Python Development", children:1)
kate(13256)/kate-filetree KateFileTreeModel::handleInsert: END!
kate(13256)/kate-filetree KateFileTreeModel::handleNameChange: END!
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: END!
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: ProxyItem(0x1219db0,0x14d5460,0,KateDocument(0x103da90) , "/home/harvey/Documents/Python Development/encryptedText.txt" )
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: "encryptedText.txt" -> "/home/harvey/Documents/Python Development/encryptedText.txt"
kate(13256)/kate-filetree KateFileTreeModel::handleNameChange: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::handleNameChange: bogus name change
kate(13256)/kate-filetree KateFileTreeModel::documentNameChanged: END!
kate(13256)/kate-filetree KateFileTreePluginView::viewChanged: BEGIN!
kate(13256)/kate-filetree KateFileTreeProxyModel::docIndex: !
kate(13256)/kate-filetree KateFileTreeModel::docIndex: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::docIndex: END!
kate(13256)/kate-filetree KateFileTreePluginView::viewChanged: selected doc= KateDocument(0x103da90) QModelIndex(0,0,0x1572820,KateFileTreeProxyModel(0x126b040) )
kate(13256)/kate-filetree KateFileTreePluginView::viewChanged: display= "encryptedText.txt"
kate(13256)/kate-filetree KateFileTreeModel::documentActivated: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::documentActivated: adding viewHistory ProxyItem(0x1219db0,0x14d5460,0,KateDocument(0x103da90) , "/home/harvey/Documents/Python Development/encryptedText.txt" )
kate(13256)/kate-filetree KateFileTreeModel::updateBackgrounds: BEGIN!
kate(13256)/kate-filetree KateFileTreeModel::updateBackgrounds: END!
kate(13256)/kate-filetree KateFileTreeModel::documentActivated: END!
kate(13256)/kate-filetree KateFileTree::slotCurrentChanged: current: QModelIndex(0,0,0x1572820,KateFileTreeProxyModel(0x126b040) )  previous: QModelIndex(-1,-1,0x0,QObject(0x0) )
kate(13256)/kate-filetree KateFileTree::slotCurrentChanged: got doc, setting prev: QModelIndex(0,0,0x1572820,KateFileTreeProxyModel(0x126b040) )
kate(13256)/kate-filetree KateFileTreePluginView::viewChanged: END!
4

2 に答える 2

1

スレッドの問題である可能性があります。スクリプトkateはコールバックを待機し、それが起こらないことを混乱させます(ただしkate、時々発生します...)

潜在的な解決策は、kate彼女のことをバックグラウンドで実行させることです。使用する必要があります

os.system('kate yourfile &')

背景に&意味があります。subprocessまたは、代わりにモジュールを使用することもできます。あなたは次のようなことをします:

subprocess.Popen(["kate", "yourfile"])

(そして、このSO投稿も確認できます)

于 2012-09-25T14:02:53.347 に答える