小甲鱼程序改良
小甲鱼在《零基础入门学习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模块
本帖最后由 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模块 我用着不报错,打包也没问题 qiuyouzhi 发表于 2020-3-18 16:55
这代码会报错啊,你那个global写的不对吧
得这样改:
https://img02.sogoucdn.com/app/a/100520146/B8C75F50EA00965A9E7AE398A9777C87我的没事
Minecraft程序猿 发表于 2020-3-26 08:50
我的没事
那好吧,无视我说的 qiuyouzhi 发表于 2020-3-26 08:50
那好吧,无视我说的
你改的那个代码是什么意思 水平很高了羡慕啊 myhic 发表于 2020-5-19 09:26
水平很高了羡慕啊
当时写的时候有些更简洁的用法还不会,比如那个元组,明明可以用元组名来访问可以使用的颜色值,但是我使用了转换成字符串,然后分片截取后面一部分来实现,还有一次我上网课数学课学概率,我写了个控制台黑框框程序模拟抛硬币,明明可以用global来访问全局变量,我却用了列表添加删除元素{:10_250:}
页:
[1]