Minecraft程序猿 发表于 2020-3-18 16:26:30

小甲鱼程序改良

        小甲鱼在《零基础入门学习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: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模块

Minecraft程序猿 发表于 2020-3-26 08:24:02

我用着不报错,打包也没问题

Minecraft程序猿 发表于 2020-3-26 08:50:04

qiuyouzhi 发表于 2020-3-18 16:55
这代码会报错啊,你那个global写的不对吧
得这样改:

https://img02.sogoucdn.com/app/a/100520146/B8C75F50EA00965A9E7AE398A9777C87我的没事

qiuyouzhi 发表于 2020-3-26 08:50:46

Minecraft程序猿 发表于 2020-3-26 08:50
我的没事

那好吧,无视我说的

Minecraft程序猿 发表于 2020-3-26 08:57:35

qiuyouzhi 发表于 2020-3-26 08:50
那好吧,无视我说的

你改的那个代码是什么意思

myhic 发表于 2020-5-19 09:26:31

水平很高了羡慕啊

Minecraft程序猿 发表于 2020-5-20 08:32:04

myhic 发表于 2020-5-19 09:26
水平很高了羡慕啊

当时写的时候有些更简洁的用法还不会,比如那个元组,明明可以用元组名来访问可以使用的颜色值,但是我使用了转换成字符串,然后分片截取后面一部分来实现,还有一次我上网课数学课学概率,我写了个控制台黑框框程序模拟抛硬币,明明可以用global来访问全局变量,我却用了列表添加删除元素{:10_250:}
页: [1]
查看完整版本: 小甲鱼程序改良