鱼C论坛

 找回密码
 立即注册
查看: 2844|回复: 7

[作品展示] 小甲鱼程序改良

[复制链接]
发表于 2020-3-18 16:26:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        小甲鱼在《零基础入门学习Python》一书15.12和15.24.3两节中提到了tkinter写画板和调出颜色选择窗口,今天我把它改良了一下,合成了一个程序,小甲鱼源代码见《零基础入门学习Python》配套资源中的p_15.37.py和p_15.63.py
        改良后源代码:
  1. from tkinter import *
  2. from tkinter import colorchooser
  3. import win32api,win32con

  4. root = Tk()
  5. root.title("甲鱼画板改良")

  6. sw = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)
  7. sh = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)
  8. x = sw / 1.5
  9. y = sh / 1.5

  10. w = Canvas(root, width=x, height=y)
  11. w.pack()

  12. def callback():
  13.     global fileName
  14.     global box
  15.     global box2
  16.     fileName = colorchooser.askcolor(title = "请选择颜色")
  17.     box=",".join(map(str, fileName))
  18.     box2 = (box[-7:])
  19.    
  20. Button(root, text="选择颜色", command=callback).pack()

  21. def paint(event):
  22.     x1, y1 = (event.x - 1.5), (event.y - 1.5)
  23.     x2, y2 = (event.x + 1.5), (event.y + 1.5)
  24.     w.create_oval(x1, y1, x2, y2, fill=box2)

  25. w.bind("<B1-Motion>", paint)

  26. Label(root, text="按住鼠标左键并移动,开始绘制你的理想蓝图吧......").pack(side=BOTTOM)

  27. mainloop()

  28. #此程序需要安装Pywin32模块
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-18 16:55:37 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-3-18 16:57 编辑

这代码会报错啊,你那个global写的不对吧
得这样改:
  1. from tkinter import *
  2. from tkinter import colorchooser
  3. import win32api,win32con

  4. root = Tk()
  5. root.title("甲鱼画板改良")

  6. filename,box,box2 = '','',''


  7. sw = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)
  8. sh = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)
  9. x = sw / 1.5
  10. y = sh / 1.5

  11. w = Canvas(root, width=x, height=y)
  12. w.pack()

  13. def callback():
  14.     fileName = colorchooser.askcolor(title = "请选择颜色")
  15.     box=",".join(map(str, fileName))
  16.     box2 = (box[-7:])
  17.    
  18. Button(root, text="选择颜色", command=callback).pack()

  19. def paint(event):
  20.     x1, y1 = (event.x - 1.5), (event.y - 1.5)
  21.     x2, y2 = (event.x + 1.5), (event.y + 1.5)
  22.     w.create_oval(x1, y1, x2, y2, fill=box2)

  23. w.bind("<B1-Motion>", paint)

  24. Label(root, text="按住鼠标左键并移动,开始绘制你的理想蓝图吧......").pack(side=BOTTOM)

  25. mainloop()

  26. #此程序需要安装Pywin32模块
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-26 08:24:02 | 显示全部楼层
我用着不报错,打包也没问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-26 08:50:04 | 显示全部楼层
qiuyouzhi 发表于 2020-3-18 16:55
这代码会报错啊,你那个global写的不对吧
得这样改:


                               
登录/注册后可看大图
我的没事
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-26 08:50:46 | 显示全部楼层

那好吧,无视我说的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-26 08:57:35 | 显示全部楼层
qiuyouzhi 发表于 2020-3-26 08:50
那好吧,无视我说的

你改的那个代码是什么意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 09:26:31 | 显示全部楼层
水平很高了羡慕啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-20 08:32:04 From FishC Mobile | 显示全部楼层
myhic 发表于 2020-5-19 09:26
水平很高了羡慕啊

当时写的时候有些更简洁的用法还不会,比如那个元组,明明可以用元组名[1]来访问可以使用的颜色值,但是我使用了转换成字符串,然后分片截取后面一部分来实现,还有一次我上网课数学课学概率,我写了个控制台黑框框程序模拟抛硬币,明明可以用global来访问全局变量,我却用了列表添加删除元素
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 05:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表