0

我正在尝试创建一个简单的 GUI,用户可以在其中输入一些文本,然后将某些单词加粗。我正在使用图形库,但是我得到一个“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() 
4

2 回答 2

2

您的

outtxt = text

应该

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

在您的代码outtxt中是text 文本本身,因此它没有调用方法draw()

于 2017-08-01T12:58:39.383 回答
0

除了在答案和评论中指出的Point()论点之外,这一行根本行不通:Text()

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

与Python实例一样finalOut,graphics.py方法也适用于对象。wordstrsetStyle("bold")Text()

解决这个问题,而不是放弃该功能,可能会很棘手,因为您需要收集正常和粗体Text()实例的列表并将它们绘制在具有适当间距的水平行中。graphics.py 没有多大帮助,因为我没有看到任何获取格式化文本宽度的方法。对于整个文本消息,样式似乎是全部或全部,而不是它的单个元素。

于 2017-08-02T07:12:59.307 回答