浔川画板___浔川python社

登录页面:

用户需要输入用户名和密码,如果输入正确则弹出提示信息“登录成功”,否则弹出“用户名或密码输入有误”的提示信息。

画板:

用户可以在画板上进行绘图,支持直线、箭头直线、矩形、画笔和橡皮擦等功能。用户可以选择颜色,也可以使用快捷键切换颜色。画板的背景色为白色,初始画笔颜色为黑色。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        

from tkinter import *
from tkinter.messagebox import *
 
 
# 设置主界面的容器大小和位置
root = Tk()
root.title('登录页面')
root.geometry("800x400+100+150")
 
#声明组件变量
log_name = StringVar()
log_pwd = StringVar()
 
#组件的使用
def btn_login():
    if log_name.get() == '浔川画板' and log_pwd.get() == '123456':
        showinfo('提示信息','登录成功,请点击"退出"前进')
    else:
        showwarning('提示信息','用户名或密码输入有误~')
 
#组件的使用
Label(root,text='账号:',font=('幼圆',20)).place(x=200,y=80)
Entry(width=27,font=('幼圆',20),textvariable=log_name).place(x=280,y=88)
Label(root,text='密码:',font=('幼圆',20)).place(x=200,y=150)
Entry(width=27,font=('幼圆',20),show='*',textvariable=log_pwd).place(x=280,y=150)
 
Button(text='登录',
       background='white',   # 背景色
       foreground='black',width=15,    # 前景色
       font=('幼圆',20),       #字体  大小
       command=btn_login).place(x=150,y=220)
Button(text='退出',
       background='white',     # 背景色
       foreground='black',      # 前景色
       width=15,font=('幼圆',20),     #字体  大小
       command=lambda:root.quit()).place(x=400,y=220)
 
# 显示图形界面
root.mainloop()

#画板

from tkinter import *
from tkinter.colorchooser import askcolor
import time
win_width = 1200
win_height = 750
bgcolor = 'white'
print("画笔初始颜色为黑色.")
print("橡皮擦要先点橡皮擦再点画笔用哦!")
time.sleep(1)
class Application(Frame):
    """一个经典的GUI写法"""
 
    def __init__(self, master=None):
        """初始化方法"""
        super().__init__(master)  # 调用父类的初始化方法
        self.x = 0
        self.y = 0
        self.fgcolor = "black"
        self.lastdraw = 0
        self.start_flag = False
        self.master = master
        self.pack()
        self.createWidget()
 
    def createWidget(self):
        """创建画图区域"""
        self.drawpad = Canvas(self, width=win_width, height=win_height, bg=bgcolor)
        self.drawpad.pack()
        # 创建按钮
        self.btn_start = Button(self, name='start', text='开始')
        self.btn_start.pack(side='left', padx=50)
        self.btn_pen = Button(self, name='pen', text='画笔')
        self.btn_pen.pack(side='left', padx=50)
        self.btn_rect = Button(self, name='rect', text='矩形')
        self.btn_rect.pack(side='left', padx=50)
        self.btn_clear = Button(self, name='clear', text='清屏')
        self.btn_clear.pack(side='left', padx=50)
        self.btn_erasor = Button(self, name='erasor', text='橡皮擦')
        self.btn_erasor.pack(side='left', padx=50)
        self.btn_line = Button(self, name='line', text='直线')
        self.btn_line.pack(side='left', padx=50)
        self.btn_line_arrow = Button(self, name='line_arrow', text='箭头直线')
        self.btn_line_arrow.pack(side='left', padx=50)
        self.btn_color = Button(self, name='color', text='颜色')
        self.btn_color.pack(side='left', padx=50)
        # 绑定事件
        self.btn_line.bind('<Button-1>', self.eventManager)  # 点击按钮事件
        self.btn_line_arrow.bind('<Button-1>', self.eventManager)  # 点击按钮事件
        self.btn_rect.bind('<Button-1>', self.eventManager)  # 点击按钮事件
        self.btn_pen.bind('<Button-1>', self.eventManager)  # 点击按钮事件
        self.btn_erasor.bind('<Button-1>', self.eventManager)  # 点击按钮事件
        self.btn_clear.bind('<Button-1>', self.eventManager)  # 点击按钮事件
        self.btn_color.bind('<Button-1>', self.eventManager)  # 点击按钮事件
        self.master.bind('<KeyPress-r>', self.hotKey)  # 绑定快捷键
        self.master.bind('<KeyPress-g>', self.hotKey)  # 绑定快捷键
        self.master.bind('<KeyPress-b>', self.hotKey)  # 绑定快捷键
        self.master.bind('<KeyPress-y>', self.hotKey)  # 绑定快捷键
        self.drawpad.bind('<ButtonRelease-1>', self.stopDraw)  # 左键释放按钮
 
    def eventManager(self, event):
        name = event.widget.winfo_name()
        print(name)
        self.start_flag = True
        if name == 'line':
            # 左键拖动
            self.drawpad.bind('<B1-Motion>', self.myline)
        elif name == 'line_arrow':
            self.drawpad.bind('<B1-Motion>', self.myline_arrow)
        elif name == 'rect':
            self.drawpad.bind('<B1-Motion>', self.myrect)
        elif name == 'pen':
            self.drawpad.bind('<B1-Motion>', self.mypen)
        elif name == 'erasor':
            self.drawpad.bind('<B1-Motion>', self.myerasor)
        elif name == 'clear':
            self.drawpad.delete('all')
        elif name == 'color':
            c = askcolor(color=self.fgcolor, title='请选择颜色')
            print(c)  # c的值 ((128.5, 255.99609375, 0.0), '#80ff00')
            self.fgcolor = c[1]
 
    def startDraw(self, event):
        self.drawpad.delete(self.lastdraw)
        if self.start_flag:
            self.start_flag = False
            self.x = event.x
            self.y = event.y
 
    def stopDraw(self, event):
        self.start_flag = True
        self.lastdraw = 0
 
    def myline(self, event):
        self.startDraw(event)
        self.lastdraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)
 
    def myline_arrow(self, event):
        self.startDraw(event)
        self.lastdraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, arrow=LAST, fill=self.fgcolor)
 
    def myrect(self, event):
        self.startDraw(event)
        self.lastdraw = self.drawpad.create_rectangle(self.x, self.y, event.x, event.y, outline=self.fgcolor)
 
    def mypen(self, event):
        self.startDraw(event)
        print('self.x=', self.x, ',self.y=', self.y)
        self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)
        self.x = event.x
        self.y = event.y
 
    def myerasor(self, event):
        self.fgcolor = "white"
        
    def hotKey(self, event):
        c = event.char
        if c == 'r':
            self.fgcolor = 'red'
        elif c == 'g':
            self.fgcolor = 'green'
        elif c == 'b':
            self.fgcolor = 'blue'
        elif c == 'y':
            self.fgcolor = 'yellow'
 
 
if __name__ == '__main__':
    root = Tk()
    root.title('浔川python社画板')
    root.geometry('1200x1000+400+400')
    app = Application(master=root)
    root.mainloop()
 

账号:浔川画板

密码:123456
友情链接:浔川python社-CSDN博客

  • 14
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值