網(wǎng)站首頁 編程語言 正文
前言
想起小學(xué)的時(shí)候老師想點(diǎn)名找小伙伴回答問題的時(shí)候,老師竟斥巨資買了個(gè)點(diǎn)名器。今日無聊便敲了敲小時(shí)候老師斥巨資買的點(diǎn)名器。
本人姓白,就取名小白點(diǎn)名器啦,嘿嘿
代碼包含:添加姓名、查看花名冊(cè)、使用指南、隨機(jī)抽取名字的功能(完整源碼在最后)
主界面
定義主界面。使用“w+”模式創(chuàng)建test.txt文件(我添加了個(gè)背景圖片,若不需要可省略)
#打開時(shí)預(yù)加載儲(chǔ)存在test.txt文件中的花名冊(cè)
namelist = []
with open("test.txt", "r") as f:
for line in f.readlines():
line = line.strip('\n')
namelist.append(line)
win = Tk()
win.title('小白點(diǎn)名器')
win.geometry('500x300')
#定義畫布,添加背景圖片
canvas = Canvas(win,width=500,height=300)
img_obj = PhotoImage(file=r"C:\Users\ge\Downloads\IMG_202206307919_png.png") #需輸入照片路徑
image = canvas.create_image(250,0,anchor = "n" , image = img_obj)
canvas.pack()
a = StringVar()
b = StringVar()
b.set('開始')
#定義可變文本信息
Label1 = Label(win, textvariable=a, font=('黑體', 100)).place(y= 60 , x=65)
#定義四個(gè)按鈕
Button1 = Button(win, textvariable=b, font=('等線', 30), command = zhuanzhuan).place(y=210,x = 190)
Button2 = Button(win, text = '添加姓名', font=('等線', 20), command = addname).place(x= 50,y =0)
Button3 = Button(win, text = '查看', font=('等線', 20), command = chakan).place(x= 230,y =0)
Button4 = Button(win, text = '指南', font=('等線', 20), command = zhinan).place(x= 360,y =0)
win.mainloop()
添加姓名
定義添加姓名界面,每添加一次姓名就保存到test.txt文件中,判斷輸入是否為空(添加提示框)、判斷花名冊(cè)是否為空。
#定義添加姓名界面
def addname():
global Entry1
window = Tk()
window.title('姓名添加器')
window.geometry('400x200+500+200')
Label11 = Label(window, text = '請(qǐng)?jiān)谙路捷斎肽阋砑拥男彰?, font=('黑體', 18), anchor='center').place(y=30, x=25)
Entry1 = Entry(window, font=('等線', 30), width=70)
Entry1.place(y=80, x=70, width=200, height=80)
Button3 = Button(window, text = '確認(rèn)', font=('等線', 18), command = addname1).place(x= 300,y =80, height=80)
#每添加一次姓名就保存到test.txt文件中
def addname1():
global namelist #聲明為全局變量實(shí)時(shí)更新
if len(Entry1.get()) == 0:
tkinter.messagebox.showinfo('提示', '姓名輸入不能為空哦')
else:
if len(Entry1.get()) == 2:
zhongjian = list(Entry1.get())[::1]
zhongjian1 = zhongjian[0] + ' ' +zhongjian[1]
if len(namelist) == 0:
nam = zhongjian1
else:
nam = '\n' + zhongjian1
else:
if len(namelist) == 0:
nam = str(Entry1.get())
else:
nam = '\n' + str(Entry1.get())
with open("test.txt", "a") as f:
f.write(nam)
tip = '姓名:' + Entry1.get() + ' 添加成功'
tkinter.messagebox.showinfo('提示', tip)
print(nam)
namelist = []
with open("test.txt", "r") as f:
for line in f.readlines():
line = line.strip('\n')
namelist.append(line)
查看花名冊(cè)
這個(gè)比較簡單,使用Text來顯示字典內(nèi)的信息即可
def chakan():
window = Tk()
window.title('花名冊(cè)查看')
window.geometry('350x200+500+200')
console = Text(window, font=('等線', 11))
console.place(y=20, x=35, width=280, height=170)
console.insert(1.0,namelist)
使用指南?
同上,使用Text顯示?
def zhinan():
window = Tk()
window.title('小白點(diǎn)名器使用指南')
window.geometry('350x230+500+200')
console = Text(window, font=('等線', 11))
console.place(y=20, x=35, width=280, height=190)
console.insert(1.0, ' 歡迎使用小白點(diǎn)名器1.0\n你可以在”添加姓名按鈕上輸入你要添加的名字\n你可以在”查看“按鈕中查看花名冊(cè)中所有的名字'
'\n你可以在此程序同級(jí)的名為”花名冊(cè).txt“的文件夾中直接批量添加、刪減姓名(使用回車做分隔)\n--------------------------------\n'
'(指南之外)此程序在CSDN中已開源,歡迎訪問我的博客:晉升閣\n需要合作的可加我微信:baijinge1137')
名字轉(zhuǎn)動(dòng)功能
判斷“開始”、“停止”狀態(tài)。定義線程。啟用一個(gè)線程
#判斷狀態(tài)
def zhuanzhuan():
if b.get() == '開始':
b.set('停止')
elif b.get() =="停止":
b.set('開始')
_thread.start_new_thread(xiancheng,()) #啟用一個(gè)線程來轉(zhuǎn)動(dòng)姓名
#定義一個(gè)線程
def xiancheng():
global xuanzhong
while b.get()=='停止':
try:
xuanzhong = random.choice(namelist)
a.set(xuanzhong)
Label1.updata()#刷新數(shù)據(jù)
time.sleep(0.3)#0.3秒刷新一次
except:
continue
time.sleep(0.3)
a.set(xuanzhong)
完整代碼
提示:我的項(xiàng)目是在主界面添加了背景圖片的,若是不需要添加背景圖片可刪掉90-94行代碼。若是需要添加背景圖片的需注意路徑地址是否正確
import random
import time
from tkinter import *
import _thread
import tkinter.messagebox
def zhuanzhuan():
if b.get() == '開始':
b.set('停止')
elif b.get() =="停止":
b.set('開始')
_thread.start_new_thread(xiancheng,()) #啟用一個(gè)線程來轉(zhuǎn)動(dòng)姓名
def xiancheng():
global xuanzhong
while b.get()=='停止':
try:
xuanzhong = random.choice(namelist)
a.set(xuanzhong)
Label1.updata()
time.sleep(0.3)
except:
continue
time.sleep(0.3)
a.set(xuanzhong)
def addname1():
global namelist #聲明為全局變量實(shí)時(shí)更新
if len(Entry1.get()) == 0:
tkinter.messagebox.showinfo('提示', '姓名輸入不能為空哦')
else:
if len(Entry1.get()) == 2:
zhongjian = list(Entry1.get())[::1]
zhongjian1 = zhongjian[0] + ' ' +zhongjian[1]
if len(namelist) == 0:
nam = zhongjian1
else:
nam = '\n' + zhongjian1
else:
if len(namelist) == 0:
nam = str(Entry1.get())
else:
nam = '\n' + str(Entry1.get())
with open("test.txt", "a") as f:
f.write(nam)
tip = '姓名:' + Entry1.get() + ' 添加成功'
tkinter.messagebox.showinfo('提示', tip)
print(nam)
namelist = []
with open("test.txt", "r") as f:
for line in f.readlines():
line = line.strip('\n')
namelist.append(line)
def chakan():
window = Tk()
window.title('花名冊(cè)查看')
window.geometry('350x200+500+200')
console = Text(window, font=('等線', 11))
console.place(y=20, x=35, width=280, height=170)
console.insert(1.0,namelist)
def zhinan():
window = Tk()
window.title('小白點(diǎn)名器使用指南')
window.geometry('350x230+500+200')
console = Text(window, font=('等線', 11))
console.place(y=20, x=35, width=280, height=190)
console.insert(1.0, ' 歡迎使用小白點(diǎn)名器1.0\n你可以在”添加姓名按鈕上輸入你要添加的名字\n你可以在”查看“按鈕中查看花名冊(cè)中所有的名字'
'\n你可以在此程序同級(jí)的名為”花名冊(cè).txt“的文件夾中直接批量添加、刪減姓名(使用回車做分隔)\n--------------------------------\n'
'(指南之外)此程序在CSDN中已開源,歡迎訪問我的博客:晉升閣\n需要合作的可加我微信:baijinge1137')
def addname():
global Entry1
window = Tk()
window.title('姓名添加器')
window.geometry('400x200+500+200')
Label11 = Label(window, text = '請(qǐng)?jiān)谙路捷斎肽阋砑拥男彰?, font=('黑體', 18), anchor='center').place(y=30, x=25)
Entry1 = Entry(window, font=('等線', 30), width=70)
Entry1.place(y=80, x=70, width=200, height=80)
Button3 = Button(window, text = '確認(rèn)', font=('等線', 18), command = addname1).place(x= 300,y =80, height=80)
namelist = []
with open("test.txt", "r") as f:
for line in f.readlines():
line = line.strip('\n')
namelist.append(line)
win = Tk()
win.title('小白點(diǎn)名器')
win.geometry('500x300')
canvas = Canvas(win,width=500,height=300)
img_obj = PhotoImage(file=r"C:\Users\ge\Downloads\IMG_202206307919_png.png") #背景圖片路徑,若不需要添加將85—88行刪掉即可
image = canvas.create_image(250,0,anchor = "n" , image = img_obj)
canvas.pack()
a = StringVar()
b = StringVar()
b.set('開始')
Label1 = Label(win, textvariable=a, font=('黑體', 100)).place(y= 60 , x=65)
Button1 = Button(win, textvariable=b, font=('等線', 30), command = zhuanzhuan).place(y=210,x = 190)
Button2 = Button(win, text = '添加姓名', font=('等線', 20), command = addname).place(x= 50,y =0)
Button3 = Button(win, text = '查看', font=('等線', 20), command = chakan).place(x= 230,y =0)
Button4 = Button(win, text = '指南', font=('等線', 20), command = zhinan).place(x= 360,y =0)
win.mainloop()
原文鏈接:https://blog.csdn.net/m0_62814033/article/details/125546203
相關(guān)推薦
- 2023-01-07 Android實(shí)現(xiàn)簡單的自定義ViewGroup流式布局_Android
- 2022-03-23 .Net?Core微服務(wù)網(wǎng)關(guān)Ocelot基礎(chǔ)介紹及集成_自學(xué)過程
- 2023-07-05 uni-app滾動(dòng)分頁 兼容(App 小程序 H5)
- 2022-04-03 C++?OpenCV實(shí)戰(zhàn)之車道檢測(cè)_C 語言
- 2022-07-31 深入了解Go的interface{}底層原理實(shí)現(xiàn)_Golang
- 2023-08-13 git版本管理常用命令
- 2023-06-21 ProtoBuf動(dòng)態(tài)拆分Gradle?Module解析_Android
- 2022-11-07 python中openpyxl庫用法詳解_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支