2017-08-01 36 views
0

我想創建一個簡單的GUI,用戶在其中輸入一些文本,然後我大膽地使用某些單詞。我正在使用圖形庫,但是我得到一個'str'對象沒有'draw'屬性。窗戶幾乎立即關閉。使用Zelle時,Python'str'對象沒有屬性'draw'graphics.py

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

'outtxt.draw(win)'你正在調用'str'對象,錯誤信息告訴你。你期待什麼行爲? – MrPromethee

回答

2

outtxt = text

應該

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

在你的代碼outtxttext文本本身,因此它沒有調用的方法draw()

0

除了Point()參數Text()的答案和評論人士指出,這條線是行不通的:

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

由於finalOutword是Python的str實例和graphics.py setStyle("bold")方法適用於Text()對象。

解決這個問題,與放棄這個功能相比,可能會非常棘手,因爲您需要收集一個正常和粗體的實例列表,並以適當的間距在水平行中繪製它們。 graphics.py沒有什麼幫助,因爲我沒有看到任何獲取格式化文本寬度的方法。看來,風格是全部或全部的文字信息,而不是它的個別元素。