Python菜单程序制作

目录

一.代码

二.分析

        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()

二.分析

        1.自定义库

        就是一个猜数字的代码。

        2.基础设置+导入

        

from tkinter import *
from csz import *
#基础程序配置
root=Tk()
root.title("菜单程序")
root.resizable(False,False)
root.geometry("300x100+500+500")
root.iconbitmap("E:/Games.ico")

窗口初始化(图标自己添)

        3.标签

img = PhotoImage(file="E:/6.png")

l = Label(root, image=img)
l.pack()

这段是主页上的图片(图片自加)

        4.菜单(主要)

#菜单函数
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)

思路: 

  1. 函数
  2. 创建顶菜单
  3. 创建下拉菜单
  4. 加入子菜单

         5.显示窗口

#显示菜单
root.config(menu = menubar)

root.mainloop()

三.投票环节

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c++学生

你的鼓励是我进步的台阶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值