>  기사  >  백엔드 개발  >  Python을 기반으로 롤 호출자를 작성하는 방법

Python을 기반으로 롤 호출자를 작성하는 방법

王林
王林앞으로
2023-05-28 13:34:12802검색

메인 인터페이스

메인 인터페이스를 정의하세요. "w+" 모드를 사용하여 test.txt 파일을 만듭니다. (배경 이미지를 추가했는데 필요하지 않으면 생략할 수 있습니다.)

#打开时预加载储存在test.txt文件中的花名册
namelist = []
with open("test.txt", "r") as f:
    for line in f.readlines():
        line = line.strip('\n')
        namelist.append(line)
win = Tk()
win.title('小白点名器')
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)
#定义四个按钮
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 파일에 저장합니다. 이름이 추가될 때마다 입력이 비어 있는지 확인하고(프롬프트 상자 추가) 명단이 비어 있는지 확인하십시오.

#定义添加姓名界面
def addname():
    global Entry1
    window = Tk()
    window.title('姓名添加器')
    window.geometry('400x200+500+200')
    Label11 = Label(window, text = '请在下方输入你要添加的姓名', 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 = '确认', font=('等线', 18), command = addname1).place(x= 300,y =80, height=80)
#每添加一次姓名就保存到test.txt文件中
def addname1():
    global namelist #声明为全局变量实时更新
    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('花名册查看')
    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('小白点名器使用指南')
    window.geometry('350x230+500+200')
    console = Text(window, font=('等线', 11))
    console.place(y=20, x=35, width=280, height=190)
    console.insert(1.0, '                欢迎使用小白点名器1.0\n你可以在”添加姓名按钮上输入你要添加的名字\n你可以在”查看“按钮中查看花名册中所有的名字'
                        '\n你可以在此程序同级的名为”花名册.txt“的文件夹中直接批量添加、删减姓名(使用回车做分隔)\n--------------------------------\n'
                        '(指南之外)此程序在CSDN中已开源,欢迎访问我的博客:晋升阁\n需要合作的可加我微信:baijinge1137')

이름 회전 기능

판단 "시작" 그리고 "정지" 상태. 스레드를 정의합니다. 스레드 활성화

#判断状态
def zhuanzhuan():
    if b.get() == '开始':
        b.set('停止')
    elif b.get() =="停止":
        b.set('开始')
    _thread.start_new_thread(xiancheng,()) #启用一个线程来转动姓名
#定义一个线程
def xiancheng():
    global xuanzhong
    while b.get()=='停止':
        try:
            xuanzhong = random.choice(namelist)
            a.set(xuanzhong)
            Label1.updata()#刷新数据
            time.sleep(0.3)#0.3秒刷新一次
        except:
            continue
            time.sleep(0.3)
    a.set(xuanzhong)

전체 코드

메인 인터페이스에 배경 이미지를 추가할 필요가 없다면 코드의 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,()) #启用一个线程来转动姓名
 
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 #声明为全局变量实时更新
    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('花名册查看')
    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('小白点名器使用指南')
    window.geometry('350x230+500+200')
    console = Text(window, font=('等线', 11))
    console.place(y=20, x=35, width=280, height=190)
    console.insert(1.0, '                欢迎使用小白点名器1.0\n你可以在”添加姓名按钮上输入你要添加的名字\n你可以在”查看“按钮中查看花名册中所有的名字'
                        '\n你可以在此程序同级的名为”花名册.txt“的文件夹中直接批量添加、删减姓名(使用回车做分隔)\n--------------------------------\n'
                        '(指南之外)此程序在CSDN中已开源,欢迎访问我的博客:晋升阁\n需要合作的可加我微信:baijinge1137')
 
def addname():
    global Entry1
    window = Tk()
    window.title('姓名添加器')
    window.geometry('400x200+500+200')
    Label11 = Label(window, text = '请在下方输入你要添加的姓名', 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 = '确认', 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('小白点名器')
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()

위 내용은 Python을 기반으로 롤 호출자를 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제