首先请注意,我在Enthought / Canopy做了所有这些。
我有这个基本的GUI,它有4个输入框,你在其中键入东西,然后你点击一个按钮,它打印你输入的东西。但是,它并没有按照我想要的方式运行。当您启动代码并输入值并按下按钮时,它不会执行任何操作,然后关闭gui窗口并打印您输入的值。
此外,当您输入值并按下按钮一次时,它再也无法执行任何操作,但如果再次按下按钮,则会打印值,但不会按预期打印。假设您输入1,2,3,4并按下按钮两次,屏幕上显示的内容为1,2,3,4,1,当您关闭窗口时,它将打印出其余部分。
如果有人能帮我解决这个问题,我感激不尽。先感谢您。以下是我的代码:
更新:IDLE不会发生此问题,只会发生Canopy。
B
答案 0 :(得分:1)
如果您在Canopy GUI中执行此操作,则应确保Qt尚未设置为GUI后端。见https://support.enthought.com/hc/en-us/articles/204469880-Using-Tkinter-Turtle-or-Pyglet-in-Canopy-s-IPython-panel
对于打印延迟:Python缓冲其输出。如果要确保立即打印某些输出,请使用带有$scope.Save = function(MyModel) {
var values = {
first: MyModel.FirstName,
last: MyModel.LastName.SelectedOption
};
console.log(values);
//Or $http/Restangular post these values somewhere
}
的print语句来刷新打印输出缓冲区。 (当然你必须先sys.stdout.flush()
。)
这可能是任何Python程序中的问题。它在Canopy中比在IDLE中更频繁地出现,因为Canopy使用了IPython的QtConsole,它将执行内核从类似前端终端的面板分成两个独立的OS进程。