2014-10-05 96 views
0

互動我不知道怎麼一會創建一個GUI應用程序,並與它從啓動它的控制檯交互。交互式Python - 保持控制檯和GUI主循環

舉個例子,我想創造PyQt的GUI和從控制檯使用它。這可能是無需重新啓動應用程序,測試設置,但在較大的項目也將調用函數等

下面是使用PyQt的一個簡單的例子:

import sys 
from PyQt4 import QtGui 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    w = QtGui.QWidget() 
    w.show() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

時,這是與python -i example.py運行控制檯被阻止只要主循環被執行。

我怎麼能說w.resize(100,100)的GUI運行時?

回答

0

OPS,貼錯的答案

之前存在棧後有關

Execute Python code from within PyQt event loop

+0

據我所見,'QTimer.singleShot'方法只允許在運行期間執行預定義的函數。這不允許來自控制檯的交互,因爲它仍然被阻止。 還是我誤解了? – Merlin 2014-10-05 22:05:51

0

最簡單的方法是使用IPython的:

ipython --gui=qt4 

ipython --helponline documentation更多選項(例如gtk,tk等)。

+0

你能提供一個關於如何使用它的例子嗎? 當我用qt4 gui運行Ipyton時,似乎無法從我的帖子中複製該示例。 我無法導入QtGui,但我無法使用預定義的QtGui。 – Merlin 2014-10-05 22:11:47

+0

如果您收到導入錯誤,請確保PyQt位於您的PYTHONPATH中。如果你在ubuntu/debian上,你可以用'apt-get install python-qt4 ipython'安裝pyqt和ipython。然後你可以用'--gui = qt4'啓動shell並開始測試你的qt代碼。當你鍵入'w.show()'時,窗口會立即顯示出來,而不會阻塞(你不必運行'app.exec _()',因爲我猜ipython已經爲你做了這個)。 – tyrion 2014-10-07 10:29:19