会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133334个问题
Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 2011楼
Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 2012楼
Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 2013楼

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.label01=Label(self,text="用户名")
        self.label01.pack()
        v1=StringVar()
        self.entry01= Entry(self,textvarible=v1)
        self.entry01.pack()
        v1.set("admin")
        print(v1.get());print(v1.entry01.get())

        self.label02 = Label(self, text="密码")
        self.label02.pack()
        v2 = StringVar()
        self.entry02 = Entry(self, textvarible=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("送花","送你99朵玫瑰花")
        if self.entry01.get()=="gaoqi" and self.entry02.get()=="123456":
            messagebox.showinfo("登陆成功")
        else:
            messagebox.showinfo("废物,登录失败")
if __name__=="__main__":
    root=Tk()
    root.geometry("400x400+200+300")
    root.title("一个经典的Label程序测试")
    app=Application(master=root)
    root.mainloop()

image.png

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

'''
Text(多行文本框)的主要用于显示多行文本,还可以显示网页链接, 图片, HTML 页面,
甚至 CSS 样式表,添加组件等。因此,也常被当做简单的文本处理器、文本编辑器或者网
页浏览器来使用。比如 IDLE 就是 Text 组件构成的。
'''
import tkinter as tk
from tkinter import messagebox
import webbrowser

class Application(tk.Frame):

    def __init__(self,master=None):
        super().__init__(master)
        self.createWidget()
        self.pack()

    def createWidget(self):
        self.text = tk.Text(self, width=40, height=30, bg='white')
        self.text.insert(1.0, '李剑神使得一把好剑!')
        self.text.insert(3.2, '徐骁是人见人怕的北凉王!')
        self.text.pack(side='bottom')

        self.btn01 = tk.Button(self, text='插入文本', command=self.insertText)
        self.btn01.pack(side='left')
        self.btn02 = tk.Button(self, text='返回文本', command=self.returnText)
        self.btn02.pack(side='left')
        self.btn03 = tk.Button(self,text='插入图片',command=self.insertPhoto)
        self.btn03.pack(side='left')
        self.btn04 = tk.Button(self, text='插入组件', command=self.insertWidget)
        self.btn04.pack(side='left')
        self.btn05 = tk.Button(self, text='tag标记', command=self.insertTag)
        self.btn05.pack(side='left')
        self.btn06 = tk.Button(self,text='退出按钮',command=root.destroy)
        self.btn06.pack(side='bottom')
    def insertText(self):
        self.text.insert(2.0,'徐凤年')
        self.text.insert(tk.INSERT,'木马牛是把神剑!')
        self.text.insert(tk.END, '阿里巴巴四十大盗')
    def returnText(self):
        print('打印所有文本信息:{0}'.format(self.text.get(1.0,tk.END)))
    def insertPhoto(self):
        self.photo = tk.PhotoImage(file='image/aaa.gif')
        self.text.image_create(tk.END,image=self.photo)
    def insertWidget(self):
        self.btn07 = tk.Button(self.text,text='添加的按钮')
        self.text.window_create(tk.INSERT,window=self.btn07)
    def insertTag(self):
        self.text.delete(1.0,tk.END)
        self.text.insert(tk.INSERT, 'good study!如果还不会就去\nbaidu好好查一下吧!')
        self.text.tag_add('good',1.0,1.4)
        self.text.tag_config('good',background='red')
        self.text.tag_add('baidu',2.0,2.4)
        self.text.config('baidu',underline=True)
        self.text.tag_bind('baidu','<Button-1>',self.webBrower)

    def webBrower(self,event):
        webbrowser.open('http://www.baidu.com')
if __name__ == '__main__':
    root = tk.Tk()
    root.title('TEXT多行文本测试')
    root.geometry('500x500+500+200')
    app = Application(master=root)
    root.mainloop()

老师帮我看一下定位到这两句语句报错,但是我不知道是什么原因,参数也是正确的啊。
        self.text.tag_add('baidu',2.0,2.4)
        self.text.config('baidu',underline=True)


Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 2023楼
Python 全系列/第二阶段:Python 深入与提高/游戏开发-坦克大战 2024楼

老师为什么显示这种内容呢

'builtin_function_or_method' object has no attribute 'width'

image.png

这是报错信息

源码

pygame pg
time
random
screen_width=screen_height=bgcolor=pg.Color(,,)
rcolor=pg.Color(,,)
MainGame:
    window=my_tank=enemy_tankList=[]
    enemy_tankCount=myBulletList=[]
    __init__(self):
        startGame(self):
        pg.display.init()
        MainGame.window=pg.display.set_mode([screen_width,screen_height])
        MainGame.my_tank = Tank(, )
        self.creatEnemyTank()
        pg.display.set_caption()


        :
            time.sleep()
            MainGame.window.fill(bgcolor)
            self.getEvent()
            MainGame.window.blit(self.getTextSurface(%len(MainGame.enemy_tankList)),(,))
            MainGame.my_tank.displayTank()
            self.biltenemyTank()
            self.blitMyBullet()
            MainGame.my_tank.stop:
                MainGame.my_tank.move()
            pg.display.update()
creatEnemyTank(self):
        top=i range (MainGame.enemy_tankCount):
            left=random.randint(,)
            speed=random.randint(,)
            enemy=EnemyTank(left, top, speed)
            MainGame.enemy_tankList.append(enemy)
    biltenemyTank(self):
        enemyTank MainGame.enemy_tankList:
            enemyTank.displayTank()
            enemyTank.randMove()
    blitMyBullet(self):
        MyBullet MainGame.myBulletList:
            MyBullet.displayBullet()
            MyBullet.randMove()





    endGame(self):
        print()
        exit()
getTextSurface(self,text):
        pg.font.init()
        font=pg.font.SysFont(,)
        textSurface=font.render(text,,rcolor)
        textSurface
getEvent(self):
        eventList=pg.event.get()
        event eventList:
            event.type==pg.QUIT:
                self.endGame()
            event.type==pg.KEYDOWN:

                event.key==pg.K_LEFT:
                    MainGame.my_tank.stop = MainGame.my_tank.direction=print()
                event.key==pg.K_RIGHT:
                    MainGame.my_tank.stop = MainGame.my_tank.direction = print()
                event.key==pg.K_UP:
                    MainGame.my_tank.stop = MainGame.my_tank.direction = print()
                event.key==pg.K_DOWN:
                    MainGame.my_tank.stop = MainGame.my_tank.direction = print()
                event.key== pg.K_SPACE:
                    print()
                    MyBullet=Bullet(MainGame.my_tank)
                    MainGame.MyBulletList.append(MyBullet)
            event.type==pg.KEYUP:
                event.key==pg.K_UP event.key==pg.K_DOWN event.key==pg.K_LEFT event.key==pg.K_RIGHT:
                    MainGame.my_tank.stop=Tank:
__init__(self,left,top):
        self.images={:pg.image.load(),
                     : pg.image.load(),
                     : pg.image.load(),
                     : pg.image.load()}
        self.direction=self.image=self.images[self.direction]
        self.rect=self.image.get_rect()
        self.rect.top=top
        self.rect.left=left
        self.speed=self.stop=move(self):
        self.direction==:
            self.rect.left > :
                self.rect.left-=self.speed
        self.direction==:

            self.rect.left+self.rect.height<screen_width:
                self.rect.left += self.speed
        self.direction==:

            self.rect.top>:
                self.rect.top -= self.speed
        self.direction==:

            self.rect.top+ self.rect.height < screen_height:
                self.rect.top += self.speed


    shot(self):
        displayTank(self):
        self.image=self.images[self.direction]
        MainGame.window.blit(self.image,self.rect)
MyTank(Tank):
    __init__(self):
        EnemyTank(Tank):
    __init__(self,left,top,speed):
        self.images={:pg.image.load(),
                     : pg.image.load(),
                     : pg.image.load(),
                     : pg.image.load()}
        self.direction=self.randDirection()
        self.image=self.images[self.direction]
        self.rect=self.image.get_rect()
        self.rect.left=left
        self.rect.top=top
        self.rect.left=left
        self.speed=speed
        self.flag=self.step=randDirection(self):
        num=random.randint(,)
        num==:
            num==:
            num==:
            num==:
            randMove(self):
        self.step<=:
            self.direction=self.randDirection()
            self.step=:
            self.move()
            self.step-=Bullet():
    __init__(self,tank):
        self.image=pg.image.load()
        self.direction=tank.direction
        self.rect=self.image.get_rect
        self.direction==:
            self.rect.left=int(tank.rect.left+tank.rect.width/-self.rect.width/)
            self.rect.top=int(tank.rect.top-self.rect.height)
        self.direction==:
            self.rect.left=int(tank.rect.left+tank.rect.width/-self.rect.width/)
            self.rect.top=int(tank.rect.top+tank.rect.height)
        self.direction==:
            self.rect.left=int(tank.rect.left-self.rect.width/-self.rect.width/)
            self.rect.top=int(tank.rect.top+tank.tect.width/-self.rect.width/)
        self.direction==:
            self.rect.left=int(tank.rect.left+tank.rect.width)
            self.rect.top=int(tank.rect.top+tank.tect.width/-self.rect.width/)
        self.speed=move(self):
        displayBullet(self):
        MainGame.window.blit(self.image,self.rect)
Wall():
    __init(self):
        displayWall(self):
        Explore():
    __init__(self):
        displayExplore(self):
        Music():
    __init__(self):
        play(self):
        __name__==:
    MainGame().startGame()


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

课程分类

百战程序员微信公众号

百战程序员微信小程序

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