会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132365个问题

from tkinter import *
from tkinter import messagebox
import random

class Application(Frame):
    def __init__(self, master=None):
        super().__init__(master)  # super()代表的是父类的定义,而不是父类对象
        self.master = master
        self.pack()
        self.createWidget()


    def createWidget(self):
        """通过grid布局管理实现计算器的界面"""
        btnText=(('MC','M+','M-','MR'),
                 ('C','±','÷','×'),
                 (7,8,9,'-'),
                 (4,5,6,'+'),
                 (1,2,3,'='),
                 (0,'.'))
        Entry(self).grid(row=0,column=0,columnspan=4,pady=10)
        for rindex,r in enumerate(btnText):
            for cindex,c in enumerate(r):
                if c == '=':
                    Button(self,text=c,width=2).grid(row=rindex+1,column=cindex,rowspan=2,sticky=NSEW)
                elif c == 0:
                    Button(self, text=c, width=2).grid(row=rindex+1 , column=cindex, columnspan=2, sticky=NSEW)
                elif c == '.':
                    Button(self, text=c, width=2).grid(row=rindex + 1, column=cindex+1, rowspan=2, sticky=NSEW)
                else:
                    Button(self, text=c, width=2).grid(row=rindex + 1, column=cindex, sticky=NSEW)





if __name__ == '__main__':
    root = Tk()
    root.geometry("400x300+200+300")
    root.title("一个经典的GUI程序类测试")
    app = Application(master=root)
    root.mainloop()

老师,为什么我的等于号没有跨行的

21.jpg

Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 1127楼

import pygame,time,random

SCREEN_WIDTH = 700

SCREEN_HEIGHT = 500

BG_COLOR=pygame.Color((0,0,0))

TEXT_COLOR=pygame.Color(255,0,0)

 

class MainGame():

    window=None

    my_tank = None

    # 存储敌方坦克的列表

    enemyTankList=[]

    #定义敌方坦克的数量

    enemyTankCount=5

    def __init__(self):

        pass

    #开始游戏

    def startGame(self):

        #加载主窗口

        #初始化主窗口

        pygame.display.init()

        #设置窗口的大小及显示

        MainGame.window=pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT])

        #初始化我方坦克

        MainGame.my_tank=Tank(350,250)

        #初始化敌方坦克,并将敌方坦克添加到列表中

        self.createEnemyTank()

 

        # 设置窗口标题

        pygame.display.set_caption("坦克大战")

        while True:

            #式坦克移动的速度慢一点

            time.sleep(0.02)

            # 设置填充色

            MainGame.window.fill(BG_COLOR)

            #获取事件

            self.getEvent()

            #绘制文字

            MainGame.window.blit(self.getTextSurface("敌方坦克剩余数量%d"%len(MainGame.enemyTankList)),(10,10))

            #调用坦克显示的方法

            MainGame.my_tank.displayTank()

            #循环遍历地方坦克列表,展示敌方坦克

            self.blitEnemyTank()

            #调用移动方法

            #如果坦克的开关是开启,才可以移动

            if not MainGame.my_tank.stop:

                MainGame.my_tank.move()

            pygame.display.update()

 

    # 初始化敌方坦克,并将敌方坦克添加到列表中

    def createEnemyTank(self):

        top=100

        #循环生成敌方坦克

        for i in range(MainGame.enemyTankCount):

            left = random.randint(0,600)

            speed = random.randint(1,4)

            enemy = EnemyTank(left,top,speed)

            MainGame.enemyTankList.append(enemy)

 

    # 循环遍历地方坦克列表,展示敌方坦克

    def blitEnemyTank(self):

        for enemyTank in MainGame.enemyTankList:

            enemyTank.displayTank()

            enemyTank.randMove()

 

    #结束游戏

    def endGame(self):

        print("再见")

        exit()

    #左上角文字的绘制

    def getTextSurface(self,text):

        #初始化字体模块

        pygame.font.init()

        #查案所有字体的名称

        #print(pygame.font.get_fonts())

        #获取字体Font对象

        font=pygame.font.SysFont('kaiti',18)

        #获取文字信息

        textSurface=font.render(text,True,TEXT_COLOR)

        return textSurface

 

        #获取事件

 

    def getEvent(self):

        #获取所有事件

        eventList = pygame.event.get()

        #遍历事件

        for event in eventList:

            #判断按下的间是关闭还是键盘按下

            #如果按退出,关闭窗口

            if event.type == pygame.QUIT:

                self.endGame()

            if event.type == pygame.KEYDOWN:

                #判断按下的键盘朝向

                if event.key == pygame.K_LEFT:

                    # 切换方向

                    MainGame.my_tank.direction = 'L'

                    #修改坦克的开关状态

                    MainGame.my_tank.stop=False

                    #MainGame.my_tank.move()

                    print('按下左键,坦克向左移动')

                elif event.key == pygame.K_RIGHT:

                    # 切换方向

                    MainGame.my_tank.direction = 'R'

                    # 修改坦克的开关状态

                    MainGame.my_tank.stop = False

                    #MainGame.my_tank.move()

                    print('按下右键,坦克向右移动')

                elif event.key == pygame.K_UP:

                    # 切换方向

                    MainGame.my_tank.direction = 'U'

                    # 修改坦克的开关状态

                    MainGame.my_tank.stop = False

                    # MainGame.my_tank.move()

                    print('按下上键,坦克向上移动')

                elif event.key == pygame.K_DOWN:

                    # 切换方向

                    MainGame.my_tank.direction = 'D'

                    # 修改坦克的开关状态

                    MainGame.my_tank.stop = False

                    # MainGame.my_tank.move()

                    print('按下左键,坦克向下移动')

                elif event.key==pygame.K_SPACE:

                    print("发射子弹")

 

 

            #松开方向键,坦克停止移动,修改坦克的开关状态

            if event.type == pygame.KEYUP:

                #判断松开是键是上下左右的时候才停止坦克移动

                if event.key==pygame.K_UP or event.key==pygame.K_LEFT or event.key==pygame.K_RIGHT or event.key==pygame.K_DOWN:

                    MainGame.my_tank.stop=True

 

class Tank():

    #添加距离左边,距离上边

    def __init__(self,left,top):

        self.images={

            'U':pygame.image.load('learning/img/p1tankU.gif'),

            'D':pygame.image.load('learning/img/p1tankD.gif'),

            'L':pygame.image.load('learning/img/p1tankL.gif'),

            'R':pygame.image.load('learning/img/p1tankR.gif'),

        }

        #方向

        self.direction='U'

        #根据当前图片的方向获取图片

        self.image =self.images[self.direction]

        #获取区域

        self.rect=self.image.get_rect()

        #设置区域的lefttop

        self.rect.left = left

        self.rect.top = top

        #速度

        self.speed=5

        #坦克移动的开关

        self.stop=True

 

 

    #移动

    def move(self):

        # 判断坦克的方向进行移动

        if self.direction == 'L':

            if self.rect.left>0:

                self.rect.left -= self.speed

        elif self.direction == 'U':

            if self.rect.top>0:

                self.rect.top -= self.speed

        elif self.direction == 'D':

            if self.rect.top+self.rect.height<SCREEN_HEIGHT:

                self.rect.top += self.speed

        elif self.direction == 'R':

            if self.rect.left+self.rect.height<SCREEN_WIDTH:

                self.rect.left += self.speed

 

 

    #射击

    def shot(self):

        pass

    #展示坦克的方法

    def displayTank(self):

        #获取展示的对象

        self.image=self.images[self.direction]

        #调用blit方法展示

        MainGame.window.blit(self.image,self.rect)

 

#我方坦克

class MyTank(Tank):

    def __init(self):

        pass

 

#敌方坦克

class EnemyTank(Tank):

    def __init(self,left,top,speed):

        #加载图片集

        self.imges={

            'U': pygame.image.load('learning/img/enemy1U.gif'),

            'D': pygame.image.load('learning/img/enemy1D.gif'),

            'L': pygame.image.load('learning/img/enemy1L.gif'),

            'R': pygame.image.load('learning/img/enemy1R.gif'),

        }

        #方向,随机生成敌方坦克的方向

        self.direction=self.randDirection()

        #根据方向获取图片

        self.image=self.images[self.direction]

        #区域

        self.rect=self.image.get_rect()

        #lefttop进行赋值

        self.rect.left=left

        self.rect.top=top

        #速度

        self.speed=speed

        #移动开关键

        self.flag=True

        #新增步数变量

        self.step=60

 

    def randDirection(self):

        num=random.randint(1,4)

        if num == 1:

            return'U'

        elif num == 2:

            return 'D'

        elif num == 3:

            return 'L'

        elif num == 4:

            return 'R'

 

    #敌方坦克随即移动的方法

    def randMove(self):

        if self.step<=0:

            #修改方向

            self.direction=self.randDirection()

            #让步数复位

            self.step=60

        else:

            self.move()

            #让步数递减

            self.step-=1

 

 

class Bullet():

    def __init__(self):

        pass

    #移动

    def move(self):

        pass

    #展示子弹的方法

    def displayBullet(self):

        pass

 

class Wall():

    def __init__(self):

        pass

    #展示墙壁的方法

    def displayWall(self):

        pass

 

class Explode():

    def __init__(self):

        pass

    #展示爆炸效果的方法

    def displayExplode(self):

        pass

 

class Music():

    def __init__(self):

        pass

    #播方音乐

    def play(self):

        pass

 

 

if __name__=='__main__':

    MainGame().startGame()

    #MainGame().getTextSurface()


Python 全系列/第二阶段:Python 深入与提高/游戏开发-坦克大战 1128楼

'''测试Entry组件的基本用法,使用面向对象的方式'''
from tkinter import *
from tkinter import messagebox
class Application(Frame):
    def __init__(self,master=None):
        super().__init__(master)
        self.master = master
        self.pack()
        self.createWidget()


    def createWidget(self):
        '''创建组件'''
        self.lable01=Label(self,text='用户名')
        self.lable01.pack()
#StringVar变量绑定到指定的组件
# StringVar变量的值发生变化,组件内容也变化
# 组件内容发生变化,StringVar变量的值也发生变化
        V1=StringVar
        self.entry01 = Entry(self,textvariable=V1)
        self.entry01.pack()
        V1.set('admin')
        print(V1.get()); print(self.entry01.get())

            #创建密码框
        self.lable02 = Label(self, text='密码')
        self.lable02.pack()
        V2 = StringVar
        self.entry02 = Entry(self, textvariable=V2,show='*')
        self.entry02.pack()



        Button(self,text='登录', command=self.login).pack()

    def login(self):
        print('用户名'+self.entry01.get())
        print('密码'+self.entry02.get())
        messagebox.showinfo('尚学堂学习系统','登录成功')


if __name__ == '__main__':
    root=Tk()
    root.geometry('400x300+200+500')
    app=Application(master = root)
    root.mainloop()

老师,为什么代码报错说少了个值的?

15.jpg

Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 1130楼
Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 1132楼
Python 全系列/第二阶段:Python 深入与提高/模块 1133楼
Python 全系列/第二阶段:Python 深入与提高/文件处理 1137楼

pygametimerandom
SCREEN_WIDTH = SCREEN_HEIGHT = BG_COLOR=pygame.Color(())
TEXT_COLOR=pygame.Color()

MainGame():
    window=my_tank = enemyTankList=[]
    enemyTankCount=():
        ():
        pygame.display.init()
        MainGame.window=pygame.display.set_mode([SCREEN_WIDTHSCREEN_HEIGHT])
        MainGame.my_tank=Tank()
        .createEnemyTank()

        pygame.display.set_caption()
        :
            time.sleep()
            MainGame.window.fill(BG_COLOR)
            .getEvent()
            MainGame.window.blit(.getTextSurface(%(MainGame.enemyTankList))())
            MainGame.my_tank.displayTank()
            .blitEnemyTank()
            MainGame.my_tank.stop:
                MainGame.my_tank.move()
            pygame.display.update()

    ():
        top=i (MainGame.enemyTankCount):
            left = random.randint()
            speed = random.randint()
            enemy = EnemyTank(lefttopspeed)
            MainGame.enemyTankList.append(enemy)

    ():
        enemyTank MainGame.enemyTankList:
            enemyTank.displayTank()
            enemyTank.move()

    ():
        ()
        ()
    (text):
        pygame.font.init()
        font=pygame.font.SysFont()
        textSurface=font.render(textTEXT_COLOR)
        textSurface

        ():
        eventList = pygame.event.get()
        event eventList:
            event.type == pygame.QUIT:
                .endGame()
            event.type == pygame.KEYDOWN:
                event.key == pygame.K_LEFT:
                    MainGame.my_tank.direction = MainGame.my_tank.stop=()
                event.key == pygame.K_RIGHT:
                    MainGame.my_tank.direction = MainGame.my_tank.stop = ()
                event.key == pygame.K_UP:
                    MainGame.my_tank.direction = MainGame.my_tank.stop = ()
                event.key == pygame.K_DOWN:
                    MainGame.my_tank.direction = MainGame.my_tank.stop = ()
                event.key==pygame.K_SPACE:
                    ()


            event.type == pygame.KEYUP:
                event.key==pygame.K_UP event.key==pygame.K_LEFT event.key==pygame.K_RIGHT event.key==pygame.K_DOWN:
                    MainGame.my_tank.stop=Tank():
    (lefttop):
        .images={
            :pygame.image.load():pygame.image.load():pygame.image.load():pygame.image.load()}
        .direction=.image =.images[.direction]
        .rect=.image.get_rect()
        .rect.left = left
        .rect.top = top
        .speed=.stop=():
        .direction == :
            .rect.left>:
                .rect.left -= .speed
        .direction == :
            .rect.top>:
                .rect.top -= .speed
        .direction == :
            .rect.top+.rect.height<SCREEN_HEIGHT:
                .rect.top += .speed
        .direction == :
            .rect.left+.rect.height<SCREEN_WIDTH:
                .rect.left += .speed


    ():
        ():
        .image=.images[.direction]
        MainGame.window.blit(.image.rect)

MyTank(Tank):
    ():
        EnemyTank(Tank):
    (lefttopspeed):
        .imges={
            : pygame.image.load(): pygame.image.load(): pygame.image.load(): pygame.image.load()}
        .direction=.randDirection()
        .image=.images[.direction]
        .rect=.image.get_rect()
        .rect.left=left
        .rect.top=top
        .speed=speed
        .flag=():
        num=random.randint()
        num == :
            num == :
            num == :
            num == :
            Bullet():
    ():
        ():
        ():
        Wall():
    ():
        ():
        Explode():
    ():
        ():
        Music():
    ():
        ():
        __name__==:
    MainGame().startGame()

报错了

Python 全系列/第二阶段:Python 深入与提高/游戏开发-坦克大战 1139楼
Python 全系列/第二阶段:Python 深入与提高/游戏开发-坦克大战 1140楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637