2013-03-22 46 views
1

我在我的python Tkinter腳本中有一個文本小部件,我試圖獲取用戶輸入的值。我的意圖是將文本小部件中的數據與腳本中的其他值(即x,y,z)一起寫入到txt文件(faultlog.txt)中,並將其作爲單列與半列分隔。這是我的嘗試。的python文本小部件獲取方法

... 
text=Text(width=30,height=1) 
text.place(x=15,y=75) 
data=text.get(1.0,END) 

lines=[] 
lines.append('{};{};{};{} \n'.format(data,x,y,z)) 
faultlog=open("faultlog","a") 
faultlog.writelines(lines) 
faultlog.close() 
... 

反而讓我在文本文件中的一個線路輸出,Python是寫這封信,txt文件(假設用戶輸入是「ABCDEFGH」的數據)

abcdefgh 
;x;y;z 

只是爲了讓事情很清楚,這就是我想要的

abcdefgh;x;y;z 

我做錯了什麼?我希望問題很清楚,我是初學者,所以請簡單回答。

+0

你沒做錯什麼,似乎文本小組件輸出其內容與一個尾隨的換行符。你可以使用'data.strip()'返回字符串的一個副本,而不需要前後空格。 – FabienAndre 2013-03-22 09:16:11

+0

如果您只需要一行字段,則可能需要查看Entry小部件。 – FabienAndre 2013-03-22 09:23:31

+0

非常感謝Fabien!它完美的作品..你應該使用的答案功能,以便我可以接受你的答案..無論如何..再次感謝! – 2013-03-22 09:25:16

回答

2

當您獲得小部件的所有文本時,最後還會包含「\ n」。您可以刪除這最後一個字符是這樣的:

data=text.get(1.0,END)[:-1] 

注意,這總是獨立工作的文本長度的長度:

>>> "\n"[:-1] 
'' 
>>> ""[:-1] 
'' 
+2

正常的方式沒有得到自動\ n是做'text.get(1.0,結束+「 - 1c」)'(或稍微不那麼複雜的「結束1c」) – 2013-03-22 10:53:18

+0

@BryanOakley我已經使用它,因爲它是一種常見的Python語言,可以與任何字符串一起使用,而「end-1c」則是Tkinter特定的解決方案。 – 2013-03-22 11:03:46

+0

如何使用'.rstrip()' – arvindh 2015-08-05 07:35:53

相關問題