[原创]python写的一个窗口抖动
我这里是python2.7.5。必须安装wxpython,必须安装pywin32,注意安装对应自己的机器的版本。
#coding:gbk
import random
import win32gui
import win32api,win32con
import ctypes
import wx
def doudong(event):
#定义结构体,存储当前窗口坐标
class RECT(ctypes.Structure):
_fields_ = [('left', ctypes.c_int),
('top', ctypes.c_int),
('right', ctypes.c_int),
('bottom', ctypes.c_int)]
rect = RECT()
HWND = win32gui.GetForegroundWindow()#获取当前窗口句柄
ctypes.windll.user32.GetWindowRect(HWND, ctypes.byref(rect))#获取当前窗口坐标
for i in range(2,200):
win32gui.SetWindowPos(
HWND, None, rect.left+5*random.randint(1,i),
rect.top-5*random.randint(1,i), rect.right-rect.left,
rect.bottom-rect.top,
win32con.SWP_NOSENDCHANGING|win32con.SWP_SHOWWINDOW)#实现更改当前窗口位置
win32gui.SetWindowPos(
HWND, None, rect.left, rect.top, rect.right-rect.left,
rect.bottom-rect.top,
win32con.SWP_NOSENDCHANGING|win32con.SWP_SHOWWINDOW)#将窗口恢复至初始位置
app = wx.App()
win = wx.Frame(None,title="My Test Program",size=(400,300))
bkg = wx.Panel(win)
loadButton = wx.Button(bkg,label="点击我抖动几下")
loadButton.Bind(wx.EVT_BUTTON,doudong)
hbox = wx.BoxSizer( )
hbox.Add(loadButton,proportion=1,flag=wx.CENTER,border=5)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5)
bkg.SetSizer(vbox)
win.Show()
app.MainLoop()
我用py2exe打包成exe文件之后,在XP下运行提示不是一个有效的win32程序。win7下运行窗口一闪而过。我的操作系统是WIN7 AMD64,运行正常。

