前言:眾所周知,很多人在社交平臺看到有小伙伴寫小軟體來表白也想蠢蠢欲試,但是由于自己技術不強,甚至沒有接觸過編程相關的知識而灰心,但是別擔心,下面我將介紹一種簡單上手的小軟體制作方法,只要稍加學習便可掌握運用(短時間精通是不太可能了),
工具:編輯器,python環境,
制作簡介:本軟體采取了相對之下簡單上手的python語言來開發,并且主要用到了 tkinter 模塊來開發,tkinter 最大的好處是簡單上手,可重復性強,最后將python檔案進行打包生成可執行檔案發給你心愛的人,當然拿來惡搞也不是不可以哦,
軟體展示:
影片演示:
代碼展示:
from random import randint
from tkinter import *
import pygame as py
# 初始化
py.mixer.init()
# 檔案加載
py.mixer.music.load(".\\music_a.mp3")#可以將她喜歡的歌曲匯入
# 播放 第一個是播放值 -1代表回圈播放, 第二個引數代表開始播放的時間
#py.mixer.music.play(-1, 10)
#創建根視窗
root = Tk()
root.title('仙女登錄界面')
root.resizable(0,0)#固定視窗
root.attributes("-alpha", 0.7)#登錄視窗的透明化
root.iconbitmap(".\\tkinter_icon.ico")#登錄圖示設定
users_screenwidth = root.winfo_screenwidth()#獲取用戶螢屏寬度
users_screenheight = root.winfo_screenheight()#獲取用戶螢屏高度
#視窗大小并居中
root_width = 320
root_height = 200
user_screen_x = (users_screenwidth-root_width) / 2
user_screen_y = (users_screenheight-root_height) / 2
root.geometry("%dx%d+%d+%d" %(root_width,root_height,user_screen_x,user_screen_y))
#函式獲取用戶資訊并驗證
def function_1():
Account = a_enter.get()
Password = b_enter.get()
# Account_len = len(Account)
# Password_len = len(Password)
if Account == "1314520" and Password == "xxx":#此處填入她的名字或者其它
tip["text"] = "登錄成功!"
root.destroy()
root2 = Tk()
py.mixer.music.play(-1, 10)
root2.title('登錄成功')
root2.resizable(0, 0) # 固定視窗
root2.attributes("-alpha", 0.7) # 登錄視窗的透明化
root2.iconbitmap(".\\tkinter_icon.ico") # 登錄圖示設定
users_screenwidth_2 = root2.winfo_screenwidth() # 獲取用戶螢屏寬度
users_screenheight_2 = root2.winfo_screenheight() # 獲取用戶螢屏高度
canvas = Canvas(root2)
canvas.pack(side='top')
global photo
photo = PhotoImage(file='xxx.gif')
canvas.create_image(153, 78, image=photo)
canvas.create_window(153, 153, window=Button(root2, width=15,
activebackground='Turquoise' , text='登錄彩蛋',command=lambda: function_2()))
# 視窗大小并居中
root2_width = 320
root2_height = 200
user_screen_x_2 = (users_screenwidth_2 - root2_width) / 2
user_screen_y_2 = (users_screenheight_2 - root2_height) / 2
root2.geometry("%dx%d+%d+%d" % (root2_width, root2_height,
user_screen_x_2,user_screen_y_2))
# 視窗大小并居中
root3_width = 320
root3_height = 200
user_screen_x_3 = (users_screenwidth_3 - root3_width) / 2
user_screen_y_3 = (users_screenheight_3 - root3_height) / 2
root3.geometry("%dx%d+%d+%d" % (root3_width, root3_height,
user_screen_x_3, user_screen_y_3))
else:
tip["text"]="用戶或密碼錯誤"
def function_2():#影片展示函式,此代碼轉載于網路
class SettingBalls:
def __init__(self, canvas, scrnwidth, scrnheight):
# __init__函式里設定物件的屬性
# 物件自己的屬性,接受canvas引數
# Canvas是一個長方形的面積,圖畫或其他復雜的布局,可以放置在畫布上的圖形、文字、部件或是幀
self.canvas = canvas
# tkinter繪圖采用螢屏坐標系,原點在左上角,x從左往右遞增,y從上往下遞增
# 在繪圖區域內,隨機產生當前球的圓心的x坐標和y坐標,用于制定出現的位置
self.xpos = randint(10, int(scrnwidth))
self.ypos = randint(10, int(scrnheight))
# 在繪圖區域內,隨機產生當前球的x坐標和y坐標的向量
# 在數學中,幾何向量(也稱矢量),指具有大小和方向的量
# 這里我們可以用來表示球的速度
self.xvelocity = randint(6, 12)
self.yvelocity = randint(6, 12)
# 隨機產生表示當前球的大小,也就是半徑長度
self.radius = randint(40, 70)
# 通過lambda運算式創建函式物件r,每次呼叫r()都會產生0~255之間的數字
r = lambda: randint(0, 255)
# 三次呼叫的數字取前兩位,用十六進制數方式存盤到self.color里,作為球的顏色
# RRGGBB,前2是紅色,中2是綠色,后2是藍色,最小是0,最大是F
# 如全黑#000000 全白#FFFFFF 全紅#FF0000
self.color = "#%02x%02x%02x" % (r(), r(), r())
# 獲取整個繪圖場景的寬度和高度(也就是螢屏解析度大小)
self.scrnwidth = scrnwidth
self.scrnheight = scrnheight
def create_ball(self):
# canvas.create_oval可以繪制一個圓
# 但是需要傳入圓的左、上、右、下四個坐標
# 所以我們先產生4個坐標,通過這個四個坐標,繪制圓的大小
# 左坐標=x坐標-半徑
x1 = self.xpos - self.radius
# 上坐標=y坐標-半徑
y1 = self.ypos - self.radius
# 右坐標=x坐標+半徑
x2 = self.xpos + self.radius
# 下坐標=y坐標+半徑
y2 = self.ypos + self.radius
# 通過canvas.create_oval()方法繪出整個圓,填充色和輪廓色分別是self.color生成的顏色
self.ball = self.canvas.create_oval(x1, y1, x2, y2, fill=self.color, outline=self.color)
def move_ball(self):
# 進行相應的移動,如果坐標超過螢屏邊緣則向相反方向移動
# 讓球的x坐標和y坐標,按照向量的大小進行增加,表示球的運行,向下和向右
self.xpos += self.xvelocity
self.ypos += self.yvelocity
# 如果球的y坐標大于等于螢屏高度和球的半徑的差,則調整球的運行y軸方向朝上
if self.ypos >= self.scrnheight - self.radius:
self.yvelocity = -self.yvelocity
# 如果球的y坐標小于等于螢屏高度和球的半徑的差,則調整球的y軸運行方向朝下
if self.ypos <= self.radius:
self.yvelocity = abs(self.yvelocity)
# 如果球的x坐標大于等于螢屏寬度和球的半徑差,則調整球的運行x軸方向朝左
if self.xpos >= self.scrnwidth - self.radius:
self.xvelocity = -self.xvelocity
# 如果球的x坐標小于等于螢屏寬度和球半徑的差,則調整球的運行x軸方向朝右
if self.xpos <= self.radius:
self.xvelocity = abs(self.xvelocity)
# 調整canvas物件的move()方法可以讓物件動起來,以及物件x軸和y軸的向量大小
self.canvas.move(self.ball, self.xvelocity, self.yvelocity)
class MoreBalls:
'''
獲取螢屏引數,系結相關事件,以及啟動生成小球的迭代器
@ num:從__main__里接受小球的數量
'''
# 定義一個串列,用來存盤所有的球物件
balls = []
# num 是球的數量
def __init__(self, num):
# 創建一個Tk()視窗示例
self.root1 = Tk()
# w和h分別獲取了螢屏解析度的寬度和高度
scrnw, scrnh = self.root1.winfo_screenwidth(), self.root1.winfo_screenheight()
# self.root.title("小球彈彈彈")
# 去除視窗邊框和任務欄顯示
self.root1.overrideredirect(1)
# self.root.iconbitmap("test.ico")
# 設定視窗的透明度,0-1之間,1是不透明,0是全透明
self.root1.attributes("-alpha", 0.4)
# 系結退出事件(鍵盤任意鍵、滑鼠任意點擊、滑鼠任意移動)
self.root1.bind("<Any-KeyPress>", self.myquit)
self.root1.bind("<Any-Button>", self.myquit)
# self.root.bind("<Motion>", self.myquit)
# Canvas提供繪圖功能(直線、橢圓、多邊形等等),寬度和高度是螢屏解析度大小
self.canvas = Canvas(self.root1, width=scrnw, height=scrnh)
# 讓畫布按pack()布局
self.canvas.pack()
# 獲取球的數量生成迭代器,每次迭代創建一個球
for i in range(num):
# ball是SettingBalls()物件,傳入self.canvas畫布,以及螢屏的寬高
ball = SettingBalls(self.canvas, scrnwidth=scrnw, scrnheight=scrnh)
# 呼叫創建球的方法
ball.create_ball()
# 將生成的球物件放到balls串列里
self.balls.append(ball)
# 呼叫run_ball()方法,啟動小球運動
self.run_ball()
# 呼叫mainloop()訊息回圈機制
self.root1.mainloop()
def run_ball(self):
for ball in self.balls:
ball.move_ball()
# run_ball每個20毫秒會被呼叫一次
self.canvas.after(20, self.run_ball)
def myquit(self, event):
self.root1.destroy()
if __name__ == "__main__":
ball = MoreBalls(20)
#用戶名,a開頭
a_label = Label(root,text='賬戶名稱:',font=('華文中宋',20))
a_label.grid(row=0,column=0,sticky=W)
a_enter = Entry(root)
a_enter.grid(row=0,column=1,sticky=E)
#密碼,b開頭
b_label = Label(root,text=' 密碼:',font=('華文中宋',20))
b_label.grid(row=1,column=0,sticky=W)
b_enter = Entry(root)
b_enter.grid(row=1,column=1,sticky=E)
#輸入的密碼為*,防止他人偷看
b_enter["show"] = "*"
#登錄按鈕,a開頭
a_button=Button(root,text='登錄',font=('華文中宋',15),
activebackground='Turquoise',command = lambda:function_1())
a_button.grid(row=2,column=1,sticky=E)
#提示資訊
tip = Label(root,text="",font=("華文中宋",16))
tip.grid(row=3,)
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/226315.html
標籤:其他
上一篇:!新手小白C/C++小游戲飛機大戰 小白入手!!!Easyx庫
下一篇:C語言 三子棋
