使用Zelle时,Python“str”对象没有属性“draw”图形.py

2024-09-29 23:31:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个简单的GUI,用户输入一些文本,我加粗某些单词。我正在使用图形库,但是我的a getting a'str'对象没有属性'draw'。而且窗户几乎瞬间关闭。在

from graphics import *
win = GraphWin("Hangman", 600, 600)
win.setBackground("yellow")
textEntry = Entry(Point(233,200),50)
textEntry.draw(win)

# click the mouse to signal done entering text
win.getMouse()

text = textEntry.getText()
testText = Text(Point(150,15), text)
testText.draw(win)

finalOut = ""

outtxt = text
outtxtSplit = outtxt.split()
for word in outtxtSplit:
    if word == "bold":
        finalOut = finalOut + word.setStyle("bold")
    else:
        finalOut = finalOut + word

outtxt.draw(win)
exitText = Text(Point(200,50), outtxt)
exitText.draw(win)
win.getMouse()
win.close() 

Tags: textguiwinwordpointdrawboldgetmouse
2条回答

除了在answer和comment中指出的Point()参数,Text()之外,这一行根本行不通:

finalOut = finalOut + word.setStyle("bold")

因为finalOut和{}是Pythonstr实例和图形.pysetStyle("bold")方法应用于Text()对象。在

修复这个问题,而不是删除这个特性,可能很棘手,因为您需要收集一个普通和粗体Text()实例的列表,并以适当的间距将它们绘制成一个水平行。图形.py不会有太大的帮助,因为我没有看到任何方法来获得格式化文本宽度。似乎样式是整个文本消息的全部或全部,而不是它的单个元素。在

你的

outtxt = text

应该是

outtxt = Text(Point(150,15), text)
                      /|\
                       | Put the size you want here.

在您的代码中,outtxttexttext本身,因此它没有称为draw()的方法

相关问题 更多 >

    热门问题