HIT暑假python作业三《超级画板》

  • 作业上交版代码
  • 编译版

程序运行效果**(运行时确保同目录下有文件夹img,里面有pen,eraser,plus,minus四个png图象,如果没有可以使用下文的编译版就不需要这四个图象)**

作业上交版代码

# -*- coding: utf-8 -*-
import pygame
#pyinstaller -F -p F:\pythoncode\venv\lib\site-packages homework3.py
colors = [(255,0,255),(0,0,255),(0,255,255),(0,255,0),(255,255,0),(255,0,0),(192,192,192),(128,128,128),(128,0,128),(0,0,128),(0,128,128),(0,128,0),(128,128,0),(128,0,0),(0,0,0),(0,192,128),(255,255,255)]
def windowsupdate():# screen.fill((100,100,100))penimg = pygame.image.load('./img/pen.png')eraserimg = pygame.image.load('./img/eraser.png')plusimg = pygame.image.load('./img/plus.png')minusimg = pygame.image.load('./img/minus.png')screen.blit(penimg,penarea)screen.blit(eraserimg,eraserarea)screen.blit(plusimg,plusarea)screen.blit(minusimg,minusarea)pygame.draw.rect(screen,(0,0,0),previewimg,width=1)pygame.draw.circle(screen,colors[nowcolor],(imgx+30,imgy+165),thickness/2)for i in range(0,16):pygame.draw.rect(screen,colors[i],colorareas[i])# screen.blit(pygame.Surface.fill(color = colors[i],rect = colorareas[i]),colorareas[i])pygame.display.update()#flip函数将重新绘制整个屏幕对应的窗口,update函数仅仅重新绘制窗口中有变化的区域。print(pygame.version)
pygame.init()
pygame.display.set_caption('超级画板')
screen = pygame.display.set_mode(size = (640,480))
screen.fill((255, 255, 255))
imgx = 10
imgy = 10
penarea = pygame.Rect(imgx,imgy,32,32)
eraserarea = pygame.Rect(imgx,imgy+50,32,32)
plusarea = pygame.Rect(imgx,imgy+100,32,32)
minusarea = pygame.Rect(imgx+35,imgy+100,32,32)
previewimg = pygame.Rect(imgx,imgy+135,60,60)
colorareas = []
for i in range(0,8):colorareas.append(pygame.Rect(imgx,imgy+200+30*i,30,30))
for i in range(0,8):colorareas.append(pygame.Rect(imgx+30,imgy+200+15+30*i,30,30))
pencolor = 14#初始参数colors[14]为黑色
nowcolor = 14
thickness = 4
windowsupdate()#窗口更新
# pygame.draw.line(screen,colors[1],(100,100),(200,200),3)
# pygame.display.update()
while True:event = pygame.event.wait()# print(event)if event.type == 1025:#如果鼠标有点击x = event.__dict__['pos'][0]y = event.__dict__['pos'][1]if penarea.collidepoint(x,y) == 1:nowcolor = pencolorelif eraserarea.collidepoint(x,y) == 1:nowcolor = 16elif plusarea.collidepoint(x,y) == 1:if thickness<=48:thickness += 2elif minusarea.collidepoint(x,y) == 1:if thickness >= 4:thickness -= 2pygame.draw.circle(screen, colors[16], (imgx + 30, imgy + 165), thickness / 2 + 1)else:for i in range(0,16):if colorareas[i].collidepoint(x,y):pencolor = inowcolor = ibreakelif event.type == 1024:#鼠标在移动状态if event.__dict__['buttons'][0] == 1:#鼠标在左键点击状态fromxy = (event.__dict__['pos'][0]-event.__dict__['rel'][0],event.__dict__['pos'][1]-event.__dict__['rel'][1])pygame.draw.line(screen, colors[nowcolor], fromxy, event.__dict__['pos'], thickness)elif event.type ==769:#按下了键盘if event.__dict__['key'] == 27:#按下了escscreen.fill(colors[16])#全部变为白色elif event.type ==256:#按下了退出breakwindowsupdate()

编译版

该编译版本隐藏了cmd窗口(编译命令见第7行,记得把安装pyinstaller 模块,并且把-p后面的路径改为自己的库的路径)

# -*- coding: utf-8 -*-
# @Time : 2021/7/22 10:19
# @Author : hzh
# @File : homework3.py
# @Software : PyCharm
import pygame
#pyinstaller -F -w -p F:\pythoncode\venv\lib\site-packages homework3.py
imgwb = [b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x1c\x00\x00\x00\x1c\x08\x04\x00\x00\x00\xd8\x04\x17\x1f\x00\x00\x00\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x07tIME\x07\xe2\x04\x13\x0f"8\xa4\x98\xf7\x1b\x00\x00\x03FIDAT8\xcb\x85\xd2]h\xd6U\x1c\x07\xf0\xcf\xf9?\x8f\xcbi(f\x98>\x86\xa2\xcefh\x14{\xd2\x14-\xac\x90$\x12$+\xd2 \xb2\xf0-k\t\xbd[)\xbad"dS\xf3e\xbe\xd4Ea7\xdd\x98$\xad\xd42\xcb\x8cz\x86f\x92d\x1a\x96:E\xd3\xd1\xb4\xbd?\xa7\x8bY\xb8\x9a\xebw\xf7\xbb\xf8\x9c\xef\xef\xfc\xce\t:\xad\x12\xd2\xe1\x0e\xcf\x1b\xa9\x97\xf3\x0eZg\xab\x0b9\xa4:cY\xa1 \xcc\xb5\xd20G|+\xba\xd9d78\x90\xf9\xbd\x9ftgL\x81g,\xf2\xabR\x9f\xc6\xda\xd0\xc3\xadf{P\xc6\x8c\xf0S\xaaS\xf6\xac\x85\x8ezLU\xfc\xb3:_S\x9f9b\x9b\xb4\xa9\xfa\xaa\xba\x02,\x11\xbb\x84R\x0bt\xf3\x8b\xee\n\xc3\x99L}FN\xa6\xc97\x8aL\xf2s\xaac\xa6K2\xd7b\xdd\\t\xad\xf1\x1e2\xda\x89x\xac_\xac\x96iR\xeba\x99\xd0aZ:yZ\x99\xf3\x96\xfb\xca \x0b\xfca\xb8F\xf3Z7\'1\xd0\xcb\'\x06\'\x1d\r\x99\x94*s\xdc4o:c\x8aU&\x98\xae\xc1\xf2\xd4\xc4 \x8a\x17\xd4\xb8&\xd5\xe1\x90e~3\xc7\x17\x8a\x94\xdb\xabRC\xf2c<n\x8a\x81qKh\x0c}\x94\n\xed\x12\xb3B*\xcc\xf0\xba\x93f\xf9\xdc \xcb\xec\xb5BsN\x9e\xfdN\x1b\x1b\xc6`\xa2b{S\x973)\xb3-Uc\xba/\r\xb1\xdcvk\xb4\xe6d\x19b\xa9:\xc3\x9c\xd2\xa2B\x83y\xe12\x966K\xb9\x1a3\xedR\xa4\xdcn\xeb4\xe5d)R\xee3\xdf\xdb\xe6\xb0\x1e\xfax!\xbf>\xb9\x8c\xcdT\xee\xb4\xa7\xec2X\xb9\xbd\xd6h\xca\xcbj\xeb\n\xd6\xe8*\xad\xc4u^\x8d\x1b\x93\x98\xbe\xb4\xc9$\xcc\xb0T\xab\xf9qG\x18d\xb9\x9dVk\xcdK\xb8\xd451V\xa1:/\xc6\r\xa15\'PB\x12\x1e\xb7L/M\x8e8\xe2j\x1f\xa9\xd0\x92\x97Pd\x99\x1d\xd6k6\xde\xbbzz9V\x86\x96\x1cR\xb7H\x84{\xacVh\xbf\xaf\xa5\x94(\x96w\xc8\xc9@\x91%\xf6X\xab\xd98\x95\xfaXdu\x1b#\x9d\x88\x05a\xb6BO\xda\x92\xafK\xba\x1a\xaa\xd4T\x03<\xea\x9cev[\x11\xf2\xf16\x95\x06\x9a\xef-\x97\x18!K\xb1\x9d\xf6\xc7)\xea\xab\xdb\xbe\xc0Ua\x8er\xfb\x9c\xf5\xb1J-qd\xd8d\xb0W\xac\xd5\x94\xfb\xe7\xf1\x12\x8c\x96\xb1=\xd4\xe7A5\x8dq\xad\xf7\x8cv\xc2\x86\xd0\x12G\x85M\x06Y\xd8\x9e\x91\xb4\x06c\xd4;\xd0vF\x1b\r\x8d\xdeV\xa7_\xcc\xc7\x91a\xa3\xa1\x16\xc7\x15\xed\x19\xa9\xfe\xbd=\xa7\xaf\xebe\xc2\x89LmF\r2bm\xb8\xcb\x80pT\x85\xa1\x16X\x19\x9a\xdb3\x12#\xdc\xa8\xcaR]\xadt;YD\xb1\xdei\x83U\x1ab\xa1U\xffN\x83\xb4q\xba\xa9\xb2\xb3fg\xbfI^r\xc2Q\x08\xbd\rQ\xa0\xa7%*4\xff\x97\x91\xb8\xdfE9\xfaj\xde\xea;\x93\xc9\x8a!\xdcg\x84\x06e\xde\xe8\x98\x916\xcc\xbex(\xa8\x96e\x97G\x94\xb83\x19\xe5n\xad\xcab\x07w\xfb\xbbB\xb6\xd6)\x0f8\xa6\xd8M\xee5\x01=\xd5\xd9\xe7\x1d\x9b5^\x89\x91\xf6\xbe\'|\xe0\x9c\xe1\xbakt\xd8A{\xe4\xfc\x10/PM\'\xf05L\xd3\xdfa\x1f\xda\xed`<\x1bZr\xfe\xbf\xfe\x02\x8c{?\x93\xc3\x9b\x9a;\x00\x00\x00%tEXtdate:create\x002018-04-19T15:34:56+08:00\x8e"6\x1f\x00\x00\x00%tEXtdate:modify\x002018-04-19T15:34:56+08:00\xff\x7f\x8e\xa3\x00\x00\x00NtEXtsoftware\x00ImageMagick 6.9.1-10 Q16 x86_64 2018-04-19 http://www.imagemagick.orgC0\xb2\x82\x00\x00\x00\x18tEXtThumb::Document::Pages\x001\xa7\xff\xbb/\x00\x00\x00\x18tEXtThumb::Image::Height\x00200}\xd7\x15i\x00\x00\x00\x17tEXtThumb::Image::Width\x00200\xee&E4\x00\x00\x00\x19tEXtThumb::Mimetype\x00image/png?\xb2VN\x00\x00\x00\x17tEXtThumb::MTime\x001524123296\x15\xe4\x85\xf1\x00\x00\x00\x0ftEXtThumb::Size\x000BB\x94\xa2>\xec\x00\x00\x00CtEXtThumb::URI\x00file:///workspace/tmp/mogr2_7_3625d214da73e4_2583_106[0]\xe2^.\x06\x00\x00\x00\x00IEND\xaeB`\x82',b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x04\x00\x00\x00\xd9s\xb2\x7f\x00\x00\x00\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x07tIME\x07\xe2\x04\x18\t\x18\x02\x94\xb1\x0bc\x00\x00\x02\nIDATH\xc7\xd5\xd5?k\x13a\x1c\xc0\xf1\xef/OHk\x82Z\xc5\xe4\x8a4\xe2b\x03^HU\xbaY7\x8b\xa8\xe8\xa0\x83\xa3\x8bCqIF\xc1\x17\xa0\xe0j\xf4\rdp\xd3(.\xb6`E\xe9\x92\xa2\x15b\x95N\xd6\x80\xe0%\xf8\x9fj\x95\xf6q\xb8^\xd2\xcb\xe5\xc9\x1dB\x87>\xe3\xdd}\xbe<w\xcfsw\xb0\xed\x87\x84_b\xc3\x0e\xc9\x11g\x89\xef\xf5\xc0\xd9X\x18\xcf##r\x97\x19f\xa8`\xe7\x03\xe7U\x18g\x842\x97H2H\x8e\x02\xb5\x8c\xb3\x9b\xcfQ\x03\x1b\xfc|\xfb\xc0\x01\xc6\xa8\xc5\x9d\xbd\xb4\xa2\x04\x02\xdcM\x14\xa8\xc5\x9c\x0cNX\xa0\'\xf7f1\xcf\'/\xa1\x8c<\xcb\x9d\x1e\x1c \xcb\x91NB\x19y\x99s\xc6\xbb\xcbvf\xa1\xfe\x83\xbb\x89\x02s\xb4z\x04"q7\xd1\x92g\xfb\xba7Rd\x0eppU\xbav\xa2\x8d\xf6\xf8[\x1e\xb3\x16\x12\xa8\'\xb4/`CV\\\xbe\xc4U}\x99\n\xba\x0f\xafr\x0f\x16;\xcf\xc0\xc7\xa7\x98\x95_\xfa\x85X\x8c\x19^\xb7G\x14i\xd4i/c\x17\x7f\nu\xac\x15c\xe2!E\xde\xbbo\xa62qpL\x89M\x1c\x14\xe4\x91]r\x9b\x0b~\x8e)\xe1\xe3\xa0 \x03g\xb8N\x9cwL1\xdb\xe1\x9b\x12\xe9v\xa2\x8b{\xab`1\x00\xbc\xd6\xf3\x9a\xe07GZL\xf3\xbb7\xf7f\x10\xe3,;\xc9I\x92\xb9\xcc\x9f\xa6og\xc4`\x92[\x0c\x03UJ\xdd\x1c\x14\xa4Y\xff\x18\xfb\xc9\t\x92\x8c\xfb\x136\x02\x93\x949\x04T)\xb2\x1c\x9c\x9f\x82&\x16,\xc87&\xfc\x89(|c\x19\x9bXZ\xbf\x94\xaf\x1c\'\xe5%\xd2(8I\x99\xd1~\xbc\xbd\x91\x1c,\xcd+\xbe0A\x8aq\xd9/\rIp\x91\x1b\x8c\x02\x0f(\x99\xb8\xef\xbf`\x83\x92+\xdcd\x08M\x8b\x15\x86\x19\x00\xeeS\xe2\x83\x89\xfb\xbeHM2\x9a\x05ip\x8c=\xa4\x18"\xce*\x15\xae\xf5\xe3\x81?\x93\xcd_\x12G9M\x9eA\x96y\xae\xa7\xf9\xf1\x06\xa2\x07\x00\x0es\x8a\'\nY_\x13\xbd\xc8\x96\x8f\x7f!\x10\xbf\x1c\xc0\x04O\x8e\x00\x00\x00%tEXtdate:create\x002018-04-24T09:24:02+08:00\xaef\x82\xf8\x00\x00\x00%tEXtdate:modify\x002018-04-24T09:24:02+08:00\xdf;:D\x00\x00\x00NtEXtsoftware\x00ImageMagick 6.9.1-10 Q16 x86_64 2018-04-19 http://www.imagemagick.orgC0\xb2\x82\x00\x00\x00\x18tEXtThumb::Document::Pages\x001\xa7\xff\xbb/\x00\x00\x00\x18tEXtThumb::Image::Height\x00200}\xd7\x15i\x00\x00\x00\x17tEXtThumb::Image::Width\x00200\xee&E4\x00\x00\x00\x19tEXtThumb::Mimetype\x00image/png?\xb2VN\x00\x00\x00\x17tEXtThumb::MTime\x001524533042\x02R\x80m\x00\x00\x00\x0ftEXtThumb::Size\x000BB\x94\xa2>\xec\x00\x00\x00DtEXtThumb::URI\x00file:///workspace/tmp/mogr2_7_36298c18aac8b7_4a489_37d[0]y\xd5\xe8\x89\x00\x00\x00\x00IEND\xaeB`\x82',b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x04\x00\x00\x00\xd9s\xb2\x7f\x00\x00\x00\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x07tIME\x07\xe2\x04\x13\n!\x1e[s\xe3\xce\x00\x00\x01#IDATH\xc7\xed\x95\xb1N\xc30\x10\x86?\'!\x89\n\x08\x86V\xea\xca\xd0\x01\x89\xb5b\xe4]\xfa\x18\x88\x15\x06\x06\x1e\x80\x89\x91\r\x95\x95\'\xe0\x1dh\xa7J\xd0\x05\x01\xaah($fp\xa0\xbePWI\xdb\x81\xa1\xbf\x17\xffw\xce\xef\xf3\xdd9\x86%\xa1\xe6xB\xbc|\x9e2q-\x0b\x9c\x02\x87\x9c\xb0\x8d\x06\x14O\x1c\xd3\xab\x16Y\xc4\r\xda\x1a\xa7\xae\x85\x9e\xc3\xbe\xc5\x9e\xe0-\xfcj\x02\xea\x0fW\xd5\x04Jc-0m$OHe\xf8\x85\xac+|\xb4e\xd3dh\xe3\x00h\xd3\xa1a\x0c9B\x8e\xd8\xb1\xf8\x80{\xe1W\xf4\xb8\xfc\xe9\xceM\xeeD\xd7\x95\x1d\xd7l\x98\x1c\xc44\x16:~\x93\xe0?Ta%\x02\x1f\xbc.\xf4\xed\x0b\xa9\xe9\x83\x11g\x8c\xa8\x8b2\x05\xecS\xb3\xf83\x0f\x852\xf69g2\xbd\xb61\xa1\xe5\xd6\xd4\xb9\xe5\xc0\xb2t\xe9\xf0%\xf6O\xcco.\xf8\xa5\x89pG\xa4\x82\x7f\xf2V\x10Xe\x12\xd7\x02\xb3\xa1\x97\x15\x183\x14|0\xbb\x88\xee\xa7\xed\x9d\x0b"v\xf3h\x1e\xb9rE0\xefq\xad\x11\x03\x8a\x8c1I\xf9CU\xc47\x98\xdeZ\xdb>:\\\x8c\x00\x00\x00%tEXtdate:create\x002018-04-19T10:33:30+08:00\xd4n\xa2\xc8\x00\x00\x00%tEXtdate:modify\x002018-04-19T10:33:30+08:00\xa53\x1at\x00\x00\x00NtEXtsoftware\x00ImageMagick 6.9.1-10 Q16 x86_64 2018-03-22 http://www.imagemagick.org\xc1\xfe\xac\x16\x00\x00\x00\x18tEXtThumb::Document::Pages\x001\xa7\xff\xbb/\x00\x00\x00\x18tEXtThumb::Image::Height\x00200}\xd7\x15i\x00\x00\x00\x17tEXtThumb::Image::Width\x00200\xee&E4\x00\x00\x00\x19tEXtThumb::Mimetype\x00image/png?\xb2VN\x00\x00\x00\x17tEXtThumb::MTime\x001524105210k\xf5\xa6p\x00\x00\x00\x0ftEXtThumb::Size\x000BB\x94\xa2>\xec\x00\x00\x00DtEXtThumb::URI\x00file:///workspace/tmp/mogr2_9_3625a7f8902eb9_18af65_50[0]\xa9\xc7\xb4\xbd\x00\x00\x00\x00IEND\xaeB`\x82',b"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x04\x00\x00\x00\xd9s\xb2\x7f\x00\x00\x00\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x07tIME\x07\xe2\x04\x13\n(0VgUH\x00\x00\x00\x89IDATH\xc7\xed\xd01\x0e\x01Q\x14\x85\xe1\xef\xbdL\xc3\x06\x94j2\xb1\x13{\xb0\t\x0bPZ\x8c\x1d`\r$S\x8a\x1dHhHH\\\x95\xa8\xdf\xe8&\xf3\xf7\xff9\xf7\\zz:A\xa2\x96\xc4\xc0P*\xf0\xc2==B\xa3\x82\xf7$\xad\x8dEQ\xf19\x96NTS\x89\x85y\xf1\xed3\x07+r\x16\xc9\xa8\xd5\xfc\x11\xe4\xef'\xda\x92\xdb\xab\xbf\x80\xf0l\xe5\xbe 7\xb0u-\xd6/vP\x11l\xd2M]\x18p\x8c\xfd\xbf\xf3{z\xba\xc4\x07\x8ei\x1c\x14u\xa2^\xe0\x00\x00\x00%tEXtdate:create\x002018-04-19T10:40:48+08:00/HK6\x00\x00\x00%tEXtdate:modify\x002018-04-19T10:40:48+08:00^\x15\xf3\x8a\x00\x00\x00NtEXtsoftware\x00ImageMagick 6.9.1-10 Q16 x86_64 2018-03-22 http://www.imagemagick.org\xc1\xfe\xac\x16\x00\x00\x00\x18tEXtThumb::Document::Pages\x001\xa7\xff\xbb/\x00\x00\x00\x18tEXtThumb::Image::Height\x00200}\xd7\x15i\x00\x00\x00\x17tEXtThumb::Image::Width\x00200\xee&E4\x00\x00\x00\x19tEXtThumb::Mimetype\x00image/png?\xb2VN\x00\x00\x00\x17tEXtThumb::MTime\x001524105648\x1fPr\xdb\x00\x00\x00\x0ftEXtThumb::Size\x000BB\x94\xa2>\xec\x00\x00\x00DtEXtThumb::URI\x00file:///workspace/tmp/mogr2_9_3625a8fda14a93_271e0_229[0]\xcc\xa7\x8c2\x00\x00\x00\x00IEND\xaeB`\x82"]
colors = [(255,0,255),(0,0,255),(0,255,255),(0,255,0),(255,255,0),(255,0,0),(192,192,192),(128,128,128),(128,0,128),(0,0,128),(0,128,128),(0,128,0),(128,128,0),(128,0,0),(0,0,0),(0,192,128),(255,255,255)]
def windowsupdate():# screen.fill((100,100,100))# penimg = pygame.image.load('./img/pen.png')# eraserimg = pygame.image.load('./img/eraser.png')# plusimg = pygame.image.load('./img/plus.png')# minusimg = pygame.image.load('./img/minus.png')penimg = pygame.image.load('pen.png')eraserimg = pygame.image.load('eraser.png')plusimg = pygame.image.load('plus.png')minusimg = pygame.image.load('minus.png')screen.blit(penimg,penarea)screen.blit(eraserimg,eraserarea)screen.blit(plusimg,plusarea)screen.blit(minusimg,minusarea)pygame.draw.rect(screen,(0,0,0),previewimg,width=1)pygame.draw.circle(screen,colors[nowcolor],(imgx+30,imgy+165),thickness/2)for i in range(0,16):pygame.draw.rect(screen,colors[i],colorareas[i])# screen.blit(pygame.Surface.fill(color = colors[i],rect = colorareas[i]),colorareas[i])pygame.display.update()#flip函数将重新绘制整个屏幕对应的窗口,update函数仅仅重新绘制窗口中有变化的区域。print(pygame.version)
pygame.init()
pygame.display.set_caption('超级画板')
screen = pygame.display.set_mode(size = (640,480))
screen.fill((255, 255, 255))
imgx = 10
imgy = 10
penarea = pygame.Rect(imgx,imgy,32,32)
eraserarea = pygame.Rect(imgx,imgy+50,32,32)
plusarea = pygame.Rect(imgx,imgy+100,32,32)
minusarea = pygame.Rect(imgx+35,imgy+100,32,32)
previewimg = pygame.Rect(imgx,imgy+135,60,60)
colorareas = []
for i in range(0,8):colorareas.append(pygame.Rect(imgx,imgy+200+30*i,30,30))
for i in range(0,8):colorareas.append(pygame.Rect(imgx+30,imgy+200+15+30*i,30,30))
pencolor = 14#初始参数colors[14]为黑色
nowcolor = 14
thickness = 4with open('pen.png', mode='wb') as f:f.write(imgwb[0])
with open('eraser.png', mode='wb') as f:f.write(imgwb[1])
with open('plus.png', mode='wb') as f:f.write(imgwb[2])
with open('minus.png', mode='wb') as f:f.write(imgwb[3])
windowsupdate()#窗口更新
# pygame.draw.line(screen,colors[1],(100,100),(200,200),3)
# pygame.display.update()
while True:event = pygame.event.wait()# print(event)if event.type == 1025:#如果鼠标有点击x = event.__dict__['pos'][0]y = event.__dict__['pos'][1]if penarea.collidepoint(x,y) == 1:nowcolor = pencolorelif eraserarea.collidepoint(x,y) == 1:nowcolor = 16elif plusarea.collidepoint(x,y) == 1:if thickness<=48:thickness += 2elif minusarea.collidepoint(x,y) == 1:if thickness >= 4:thickness -= 2pygame.draw.circle(screen, colors[16], (imgx + 30, imgy + 165), thickness / 2 + 1)else:for i in range(0,16):if colorareas[i].collidepoint(x,y):pencolor = inowcolor = ibreakelif event.type == 1024:#鼠标在移动状态if event.__dict__['buttons'][0] == 1:#鼠标在左键点击状态fromxy = (event.__dict__['pos'][0]-event.__dict__['rel'][0],event.__dict__['pos'][1]-event.__dict__['rel'][1])pygame.draw.line(screen, colors[nowcolor], fromxy, event.__dict__['pos'], thickness)elif event.type ==769:#按下了键盘if event.__dict__['key'] == 27:#按下了escscreen.fill(colors[16])#全部变为白色elif event.type ==256:#按下了退出breakwindowsupdate()

HIT暑假python作业三《超级画板》相关推荐

  1. 基于Python所写的超级画板设计

    点击以下链接获取源码资源: https://download.csdn.net/download/qq_64505944/87959096?spm=1001.2014.3001.5503 <超级 ...

  2. 好家伙!清华电子系大一暑假Python课程大作业上知乎热榜!竟是个CV任务

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 编辑:Amusi  |  来源:知乎 https://www.zhihu.com/question/4719 ...

  3. python:超级画板

    目录 <超级画板>功能说明 开发环境要求 运行方法 注意代码分享 源码工程及说明文档下载路径 <超级画板>功能说明 超级画板的主要功能都集中在一个窗口上实现,在这个窗口中,默认 ...

  4. python超级画板白板程序源码

    wx供重浩:创享日记 对话框发送:python画板 免费获取完整源码源文件+说明文档+可执行文件等 在PyCharm中运行<超级画板>即可进入如图1所示的系统主界面.在该界面中,通过左侧的 ...

  5. python第三章实操作业

    python第三章实操作业 1.画出代码 a = [100,200,300]的内存存储示意图. 2.使用 range 生成序列:30,40,50,60,70,80 3.推导式生成列表: a = [x* ...

  6. 寒假Python第三天作业

    寒假Python第三天作业作业 1:计算器: 请输入两个数和一个符号,完成两个数的+ - * / % // ** a=float (input ("请输入第一个数 : ")) b= ...

  7. 07 基于python实现超级画板(完整的代码+说明文档+可执行程序exe)

    <超级画板>程序使用说明 在PyCharm中运行<超级画板>即可进入如图1所示的系统主界面.在该界面中,通过左侧的工具栏可以选择所要进行的操作. 具体的操作步骤如下: 超级画板 ...

  8. Python:变身超级赛亚人

    Python:变身超级赛亚人 思路 金色头发 添加头发 电弧特效 代码下载 上周六搞了个修炼写轮眼,利用python代码定位眼球再贴图,有点太粗糙.今儿又周末,效果升级下,玩个变身超级赛亚人-- 预期 ...

  9. # 互动媒体期末作业——P5.js“画板”

    前言 之前的推文就曾说过对于画画简直是一窍不通,然而最近的大作业最后还是需要做一个与画画有关的内容--画板.不过,还好,最后并不是要我再画,而且就算是画,也不需要动手画,所以这对我来说,还是可以接受的 ...

最新文章

  1. java-jwt这个库没用过吧?
  2. 回溯算法-----复原IP地址(Java版本)
  3. 自建ES迁移至阿里云ES(使用脚本及logstash同步)
  4. Centos 6.4下 MySQL配置主从服务(集群)
  5. 玩转Excel系列-SUMIFS函数使用及实例
  6. 给产品经理背景的朋友介绍SAP C4C
  7. 身份验证错误错误指定的句柄无效_基于 Web 端的人脸识别身份验证「实践」
  8. 【qxbt day1】 P2367 语文成绩
  9. c语言中 字母对应的数值,C语言编程:求下式中每个字母所代表的数字
  10. 【BZOJ4069】[Apio2015]巴厘岛的雕塑 按位贪心+DP
  11. DWR操作java对象
  12. HBase伪分布式搭建
  13. 绘制电气电路中的电阻——Visio制图总结【电控类】(二)
  14. Nessus最新版8.15安装教程
  15. 如何有效规避程序化交易的滑点?
  16. C#下Winform下使用WebKit、Geckofx、CefSharp对比及CefSharp代码实现
  17. ORA-01652: 无法通过 128 (在表空间 LTE_PM_TEMP 中) 扩展 temp 段
  18. cosx等价无穷小_等价无穷小替换注意事项
  19. 需求分析师如何提高核心竞争力
  20. HTTP协议——请求格式及方法

热门文章

  1. 齐鲁工业大学计算机考研资料汇总
  2. Google maps javascript api v3 叠加层(Overlays)介绍
  3. Foundation Actionscript 3.0 with Flash CS3 and Flex
  4. SimpleCG绘图函数(4)--绘制圆
  5. 电脑阅卷显示准考证异常
  6. debug 进阶 跳过反射以及aop
  7. 如何优雅地删除Docker镜像和容器(超详细)
  8. 2022年全球与中国机载高光谱成像相机市场现状及未来发展趋势
  9. 视频里的声音怎么转换成音频
  10. Vijos 1335-数独验证【模拟】