鱼C论坛

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

[原创] 小甲鱼程序改良

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

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

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

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

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

sw = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)
sh = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)
x = sw / 1.5
y = sh / 1.5

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

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

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

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

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

mainloop()

#此程序需要安装Pywin32模块
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

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

filename,box,box2 = '','',''


sw = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)
sh = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)
x = sw / 1.5
y = sh / 1.5

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

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

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

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

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

mainloop()

#此程序需要安装Pywin32模块
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-26 08:24:02 | 显示全部楼层
我用着不报错,打包也没问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


                               
登录/注册后可看大图
我的没事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那好吧,无视我说的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你改的那个代码是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 09:26:31 | 显示全部楼层
水平很高了羡慕啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 13:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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