我目前有一个非常简单的应用程序,唯一的互动是摇动iPhone.但最终屏幕变暗和自动锁定,因为iPhone没有任何触摸事件.我想知道是否有办法在摇动时重置自动锁定超时?
我知道要完全禁用自动锁定,我会这样做:
[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]
Run Code Online (Sandbox Code Playgroud)
但我真的不想完全禁用它; 如果合法地不使用iPhone,它应该按预期自动锁定.
谢谢你的帮助.
我在闲聊:
>>> import mymodule
>>> # ???
Run Code Online (Sandbox Code Playgroud)
导入模块后:
if __name__ == '__main__':
doStuff()
Run Code Online (Sandbox Code Playgroud)
我如何实际main从IDLE 打电话?
如何在Qt QMainWindow中检测用户不活动?到目前为止,我的想法是使用一个QTimer来增加一个计数器,如果传递了某个值,它将锁定应用程序.任何鼠标或键交互都应该将计时器设置回0.但是我需要知道如何正确处理重置的输入事件; 我可以重新实施:
virtual void keyPressEvent(QKeyEvent *event)
virtual void keyReleaseEvent(QKeyEvent *event)
virtual void mouseDoubleClickEvent(QMouseEvent *event)
virtual void mouseMoveEvent(QMouseEvent *event)
virtual void mousePressEvent(QMouseEvent *event)
virtual void mouseReleaseEvent(QMouseEvent *event)
Run Code Online (Sandbox Code Playgroud)
...但是QMainWindow中所有小部件的事件处理程序不会阻止这些控件中发生的事件到达QMainWindow吗?是否有更好的架构来检测用户活动?
这是环境:
我正在尝试调试客户端遇到的问题.基本上每隔几周,我们的Web应用程序就锁定在他们的服务器上,他们无法访问它.重启可以解决问题.进一步调查显示,所有内容都被锁定的原因是一切都在等待数据库连接返回.我认为问题可能出在SQL Server上,而不是C3P0上.
我认为正在发生的是C3P0的"空闲检查查询"正在悬挂.查询是这样的:
select * from c3p0_connection_test_table
Run Code Online (Sandbox Code Playgroud)
看起来这个查询运行,结果永远不会返回.这是我在线程转储中看到的内容.注意DefaultConnectionTester.activeCheckConnection(),这是空闲检查:
"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2" daemon prio=6 tid=0x0000000007c32000 nid=0x1250 runnable [0x000000001072f000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.DataInputStream.readFully(DataInputStream.java:178)
at java.io.DataInputStream.readFully(DataInputStream.java:152)
at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:841)
at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:722)
- locked <0x000000016ac03f48> (a java.util.ArrayList)
at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466)
at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103)
at net.sourceforge.jtds.jdbc.ResponseStream.peek(ResponseStream.java:88)
at net.sourceforge.jtds.jdbc.TdsCore.wait(TdsCore.java:3928)
at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1045)
- locked <0x000000016d965268> (a net.sourceforge.jtds.jdbc.TdsCore)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:465)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeQuery(JtdsStatement.java:1301)
at com.mchange.v2.c3p0.impl.DefaultConnectionTester.activeCheckConnection(DefaultConnectionTester.java:73)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.testPooledConnection(C3P0PooledConnectionPool.java:374)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.refurbishIdleResource(C3P0PooledConnectionPool.java:310)
at com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask.run(BasicResourcePool.java:1999)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Run Code Online (Sandbox Code Playgroud)
但是什么可能导致这样一个简单的查询挂起来从套接字读取?我不相信这个表上会有任何数据库锁定,因为它完全由C3P0管理,从不插入/更新.此外,任何失败的尝试从池中获取连接(如果这是挂起的原因),我会期望在某处的堆栈跟踪.相反,我看到的是应用程序只是锁定,因为所有未来的连接请求都在等待这个"空闲检查"完成. …
我是python的新手,我正在使用Python的IDLE.使用numpy,我创建了一个24 x 24矩阵.我只是想看一下矩阵.我已经在我的显示器上最大化了外壳,所以有足够的空间来打印整个24列的宽度,但它只打印前13列,然后继续到下一行打印下面的11列(在Stack中遇到麻烦)溢出复制并粘贴它正在做的事情).Shell窗口的整个右半部分是空白的(它压缩所有东西以适合左半部分).
这比打印24列宽更难阅读.任何人都可以告诉我如何使用shell的整个宽度(而不仅仅是左半部分)说服IDLE打印?我认识到这是一个有点愚蠢的问题而道歉,但它让我发疯.
它看起来有点像这样(再次尝试粘贴时出现Stack Overflow问题):
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., …Run Code Online (Sandbox Code Playgroud) 我试图shell到一个非python子进程,并允许它从python继承stdin和stdout. - 我正在使用subprocess.Popen
如果我从控制台调用,这可能会有效,但是当我使用python shell时它肯定不起作用
(我顺便使用IDLE)
有没有办法说服python允许非python子进程将它的stdout打印到python shell?
当我使用IDLE运行脚本时,如果脚本遇到异常并且执行停止,那么我将留下一个交互式shell,我可以用它来调查异常时的应用程序状态.这真的很好,但我发现IDLE缺乏编辑器.有没有一种方法可以让我在不使用IDLE的情况下"放弃异常交互式shell"行为?
有没有办法找出python脚本是否在IDLE解释器或终端中运行?
如果可能,跨平台工作,或者如果每个平台需要不同的方式.
如果可能,使用Python 2和Python 3,或者如果每个版本需要不同的方式.
我能想到的唯一方法是检查为IDLE运行的进程,但我不知道该怎么做.
如果IDLE对另一个脚本打开并且我的脚本在终端中运行,即使我的脚本没有在IDLE中运行,进程检查也会返回true.
我的脚本需要以不同的方式运行,具体取决于它是在IDLE还是终端中运行.
我正在运行一个脚本,该脚本使用一个模块在屏幕上打印很多东西,而我的RAM用完了.
我不能让模块暂时不写任何东西.
Python Shell存储绝对所有内容,我想清除它.
在类似的问题上,我能找到的唯一答案就是写os.system('cls')(在Windows上),但它不会删除任何内容.
有没有办法清除Python Shell或限制其大小?
谢谢
编辑.
好吧,这个问题被标记为重复,我被要求澄清为什么不是.
我声明这os.system('cls')不起作用,而我提出的重复问题的答案是写os.system('cls').
我从http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz下载了源代码,并借助于http://docs.python.org/devguide/的说明setup.html,我能够从源代码构建Python.
现在尝试运行命令时
C:\Python-2.7.6\PCbuild\pythonw_d.exe c:\Python-2.7.6\Lib\idlelib\idle.py
Run Code Online (Sandbox Code Playgroud)
什么都没有出现.
所以我开始调试,首先通过以下代码片段将控制台添加到Windows应用程序 pythonw\WInMain.c
void RedirectStdoutToNewCOnsole()
{
HANDLE consoleHandle;
FILE *fp;
int fileDescriptor;
CONSOLE_SCREEN_BUFFER_INFO csbi;
AllocConsole();
consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
fileDescriptor = _open_osfhandle((intptr_t)consoleHandle, _O_TEXT);
fp = _fdopen( fileDescriptor, "w" );
*stdout = *fp;
setvbuf( stdout, NULL, _IONBF, 0 );
if ( GetConsoleScreenBufferInfo(consoleHandle, &csbi) )
{
COORD bufferSize;
bufferSize.X = csbi.dwSize.X;
bufferSize.Y = 1000;
SetConsoleScreenBufferSize(consoleHandle, bufferSize);
}
}
Run Code Online (Sandbox Code Playgroud)
我能够看到源被正确解析
Token NAME/'import' ... It's a keyword
DFA 'file_input', state 0: Push ...
DFA 'stmt', …Run Code Online (Sandbox Code Playgroud) python-idle ×10
python ×6
c++ ×1
c3p0 ×1
debugging ×1
delay ×1
ide ×1
iphone ×1
jdbc ×1
jtds ×1
numpy ×1
popen ×1
python-2.7 ×1
python-3.x ×1
qt ×1
runpy ×1
screen ×1
shell ×1
sql-server ×1
subprocess ×1
terminal ×1
timer ×1