一、项目前提
- python版本:小主用的是python3.7,建议用python3以上的版本
- 开发工具:当然不是大佬用记事本开发啦,小主用的是pycharm2019这一开发工具,可以自行在网上搜索下载(如果对这个工具感兴趣的话。
二、项目效果
没有实现效果那还学个毛线,小主没有界面美化的天分,就将就这大胆发出来了。
-
用canvas来加载在窗体上从而修改背景颜色。
-
用canvas来加载在窗体上从插入背景图片。
三、代码实现
呐,具体的效果就是上面这样啦。如果有兴趣不妨亲自试试。
- 用canvas来加载在窗体上从而修改背景颜色。
窗体代码如下:
# -*- coding: utf-8 -*-#
#-------------------------------------------------------------------------------
# Name: Login
# Description:
# Author: 魔法师的魔法书
# Date: 2019/12/15
#-------------------------------------------------------------------------------
import tkinter as tk
from PIL import Image, ImageTk
from py_gui.listenter.user_listener.UserListener import Login
class LoginWin:
def __init__(self,title):
self.title = title
self.win = tk.Tk()
self.win.resizable(False, False)
self.win.title(self.title)
curWidth, curHeight = 500, 300
scnWidth, scnHeight = self.win.maxsize()
geocnf = '%dx%d+%d+%d' % (curWidth, curHeight,
(scnWidth - curWidth) / 2, (scnHeight - curHeight) / 2)
self.win.geometry(geocnf)
canvas = tk.Canvas(self.win,
width = 500, # 指定Canvas组件的宽度
height = 800, # 指定Canvas组件的高度
bg = 'white' ) # 指定Canvas组件的背景色
canvas.pack(side='top')
# 创建关联字符变量
self.varName = tk.StringVar(self.win, value='')
self.varPWD = tk.StringVar(self.win, value='')
varFindPWD=tk.StringVar()
varquery=tk.StringVar()
label = tk.Label(self.win, text="用户名:",bg='Gray',fg='SkyBlue', font=("隶书 -20"))
label.place(x=90, y=70, height=28, width=80)
label = tk.Label(self.win, text="密码:",bg='Gray',fg='SkyBlue', font=("隶书 -20"))
label.place(x=90, y=120, height=30, width=80)
entryName = tk.Entry(self.win, textvariable=self.varName)
entryName.place(x=190, y=70, height=30, width=200)
entryPWD = tk.Entry(self.win, textvariable=self.varPWD)
entryPWD.place(x=190, y=120, height=30, width=200)
findPWD=tk.Radiobutton(self.win, text='修改密码?', fg='SkyBlue',bg='Azure',variable=varFindPWD, value='findPWD', command=self.findPWD)
findPWD.place(x=140,y=180)
query = tk.Radiobutton(self.win, text='免登浏览',fg='SkyBlue',bg='Azure', variable=varquery, value='query',
command=self.query)
query.place(x=250,y=180)
bt_login = tk.Button(self.win, text='登录',fg='SkyBlue',bg='Azure', command=self.login)
bt_login.place(x=140, y=230,width=60)
bt_logup = tk.Button(self.win, text='注册',fg='SkyBlue',bg='Azure', command=self.register)
bt_logup.place(x=210, y=230,width=60)
bt_logquit = tk.Button(self.win, text='退出',fg='SkyBlue',bg='Azure', command=self.exitSys)
bt_logquit.place(x=280, y=230,width=60)
#下面都是按钮的监听,只是实现登录页面是没必要写的
def login(self):
Login().login()
def findPWD(self):
Login().findPwd()
def exitSys(self):
Login().exitSys()
def register(self):
Login().register()
def query(self):
Login().query()
- 用canvas来加载在窗体上从插入背景图片。
插入背景图片和前面的代码基本一样,只需要在
canvas.pack(side='top')
上面加上
global image
image=Image.open("F:Pictures\绿芽.jpg")#这是我的电脑上上图片的绝对路径你也可以将图片包含到你的工程下面
#则 替换为 image=Image.open("绿芽.jpg")就行了
global img
img=ImageTk.PhotoImage(image)
canvas.create_image(0,0,anchor="nw",image=img)#使用create_image将图片添加到canvas上