目录
一.代码
二.分析
1.自定义库
2.基础设置+导入
3.标签
4.菜单(主要)
5.显示窗口
三.投票环节
下面是一个使用python写的菜单程序,以及分析.
from tkinter import *
from csz import *
#基础程序配置
root=Tk()
root.title("菜单程序")
root.resizable(False,False)
root.geometry("300x100+500+500")
root.iconbitmap("E:/Games.ico")
img = PhotoImage(file="E:/6.png")
l = Label(root, image=img)
l.pack()
#菜单函数
def help():
top = Toplevel()
top.title("help")
top.geometry("200x50+100+500")
msg = Message(top, text="这是一个游戏的菜单程序")
msg.pack()
#创建一个顶级菜单
menubar = Menu(root)
# 创建一个下拉菜单
filemenu = Menu(menubar, tearoff=False)
#模板:filemenu.add_command(label="", command=)
filemenu.add_command(label="介绍", command=help)
filemenu.add_command(label="退出", command=root.destroy)
menubar.add_cascade(label = "帮助", menu = filemenu)
# 创建另一个下拉菜单
editmenu = Menu(menubar, tearoff=False)
editmenu.add_command(label="猜数字", command=main)
menubar.add_cascade(label="游戏", menu=editmenu)
#显示菜单
root.config(menu = menubar)
root.mainloop()
上面用的自定义库csz.py:
import random
import tkinter
import tkinter.messagebox
import tkinter.simpledialog
class Guess_Game(object):
def __init__(self):
#初始化主窗口
self.root=tkinter.Tk()
#设置窗口标题
self.root.title('猜数字游戏——Keep_Trying_Go')
#设置窗口大小
self.root.geometry('480x180+400+300')
#设置窗口为不允许改变大小
self.root.resizable(False,False)
#创建画布
self.canvas=tkinter.Canvas(self.root,height=400,width=700,borderwidth=2)
#用户猜的次数
self.varNumber=tkinter.StringVar(self.root,value='0')
#允许用户猜的次数
self.totalTimes=tkinter.IntVar(self.root,value=0)
#用户已经猜的次数
self.already=tkinter.IntVar(self.root,value=0)
#记录当前生成的随机数
self.currentNumber=tkinter.IntVar(self.root,value=0)
#记录玩家玩游戏的总次数
self.times=tkinter.IntVar(self.root,value=0)
#记录玩家猜对的总次数
self.right=tkinter.IntVar(self.root,value=0)
self.lb=tkinter.Label(self.root,text='请输入一个整数: ')
self.lb.place(x=70,y=50,width=100,height=30)
#用户猜的次数并输入文本框
self.entryNumber=tkinter.Entry(self.root,textvariable=self.varNumber)
self.entryNumber.place(x=170,y=50,width=150,height=30)
#游戏开始之后才允许输入数字
self.entryNumber['state']='disabled'
self.button=tkinter.Button(self.root,text='Start Game',command=self.buttonClick)
self.button.place(x=150,y=100,width=80,height=30)
#按钮单击事件处理函数
def closeWindows(self):
self.message='共玩游戏 {0}次,猜对 {1}次!\n欢迎下次再玩!'
self.message=self.message.format(self.times.get(),self.right.get())
tkinter.messagebox.showinfo('战绩',self.message)
def buttonClick(self):
if self.button['text']=='Start Game':
#每次游戏时允许用户自定义数值的范围
#玩家必须输入正确的数字
while True:
try:
#simpledialog模块参数:title指定对话框的标题;prompt 显示的文字;initialvalue 指定输入框的初始值;
self.start=tkinter.simpledialog.askinteger('允许的最小整数','最小数',initialvalue=1)
break
except:
pass
while True:
try:
self.end=tkinter.simpledialog.askinteger('允许的最大整数','最大数',initialvalue=10)
break
except:
pass
#在用户自定义的数值范围内生成随机数
self.currentNumber.set(random.randint(self.start,self.end))
#用户自定义一共允许猜的次数
#玩家必须输入正确的数字
while True:
try:
self.t=tkinter.simpledialog.askinteger('最多允许猜几次?','总次数',initialvalue=3)
self.totalTimes.set(self.t)
break
except:
pass
#已猜的次数初始化为0
self.already.set(0)
self.button['text']='剩余次数: '+str(self.t)
#将文本框初始化为0
self.varNumber.set('0')
#允许用户开始输入数字
self.entryNumber['state']='normal'
#玩游戏的次数加一
self.times.set(self.times.get()+1)
else:
#一共允许用户猜的次数
self.total=self.totalTimes.get()
#本次游戏的正确答案
self.current=self.currentNumber.get()
try:
self.x=int(self.varNumber.get())
except:
tkinter.messagebox.showerror('抱歉','必须输入整数')
return
if self.x==self.current:
tkinter.messagebox.showinfo('恭喜','猜对了')
self.button['text']='Start Game'
#禁用文本框
self.entryNumber['state']='disabled'
self.right.set(self.right.get()+1)
else:
#已猜次数加一
self.already.set(self.already.get()+1)
if self.x>self.current:
tkinter.messagebox.showerror('抱歉','猜的次数太大了')
else:
tkinter.messagebox.showerror('抱歉', '猜的次数太小了')
#可猜的的次数已经用完
if self.already.get()==self.total:
tkinter.messagebox.showerror('抱歉','游戏结束了,正确的数是: '+str(self.currentNumber.get()))
self.button['text']='Start Game'
#禁用文本框
self.entryNumber['state']='disabled'
else:
self.button['text']='剩余次数: '+str(self.total-self.already.get())
def main():
g=Guess_Game()
# g.root.protocol('WM_DELETE_WINDOW', g.closeWindow())
tkinter.mainloop()
g.closeWindows()
if __name__ == '__main__':
main()
就是一个猜数字的代码。
from tkinter import *
from csz import *
#基础程序配置
root=Tk()
root.title("菜单程序")
root.resizable(False,False)
root.geometry("300x100+500+500")
root.iconbitmap("E:/Games.ico")
窗口初始化(图标自己添)
img = PhotoImage(file="E:/6.png")
l = Label(root, image=img)
l.pack()
这段是主页上的图片(图片自加)
#菜单函数
def help():
top = Toplevel()
top.title("help")
top.geometry("200x50+100+500")
msg = Message(top, text="这是一个游戏的菜单程序")
msg.pack()
#创建一个顶级菜单
menubar = Menu(root)
# 创建一个下拉菜单
filemenu = Menu(menubar, tearoff=False)
#模板:filemenu.add_command(label="", command=)
filemenu.add_command(label="介绍", command=help)
filemenu.add_command(label="退出", command=root.destroy)
menubar.add_cascade(label = "帮助", menu = filemenu)
# 创建另一个下拉菜单
editmenu = Menu(menubar, tearoff=False)
editmenu.add_command(label="猜数字", command=main)
menubar.add_cascade(label="游戏", menu=editmenu)
思路:
#显示菜单
root.config(menu = menubar)
root.mainloop()