2013-06-16 7 views
0

tkinter를 사용할 때 파이썬에서 인덱스를 찾으려고하는데이 문제가 계속 발생합니다. 나는 라인 인덱스가 1에서부터 시작하고 칼럼 인덱스가 0에서부터 시작한다는 것을 알고 있지만, 1.9에서 인덱스를 찾으려고 할 때 1.9에서 2.0이 될 수 있기 때문에 인덱스를 찾을 수는 없다.하지만 그렇지 않다. 예를 들어,파이썬에서 인덱스 찾기

self.t1 = Text(self, width = 35, height = 5, wrap = WORD) 
self.t1.grid(row = 0, column = 0, sticky = W) 
self.t1.insert(1.0, 'Q') 
self.t1.insert(1.1, 'W') 
self.t1.insert(1.2, 'E') 
self.t1.insert(1.3, 'R') 
self.t1.insert(1.4, 'T') 
self.t1.insert(1.5, 'Y') 
self.t1.insert(1.6, 'U') 
self.t1.insert(1.7, 'I') 
self.t1.insert(1.8, 'O') 
self.t1.insert(1.9, 'P') 
self.t1.insert(1.?, 'A') #What index comes after 1.9 but not 2.0 
         #because that would mean it'd be on a new line. 
self.t1.get(1.?, 1.?) #I'm not sure what index I'm looking for to find 'A' 

또한 3 개의 소수점 숫자를 사용하려고 할 때. 1.01. 그것은 잘 작동하지만 인덱스로 1.08에 도착하면이 오류 얻을 :

self.tk.call((self._w, 'insert', index, chars) + args) 
_tkinter.TclError: bad text index "1.08" 

내가 1.09도하지만 1.10에 대해 동일한 오류가 발생합니다. 왜 그런가요?

그들은 실제로 알아 내기가 쉽지만 심각한 것은 잘 모릅니다.

감사합니다.

답변

1

Tkinter Text 위젯 색인은 10 진수처럼 보이지만 실제로는 문자열입니다. 점으로 구분 된 두 부분으로 구성됩니다. "line.column"이므로 "1.9"다음의 다음 열은 "1.10"입니다. "2.0"은 두 번째 줄의 가장 왼쪽 열입니다.

+0

맞습니다. '1.1'의 뒤에 무한대의 0이 있기 때문에 파이썬은 '1.10'을 '1.1'로 해석합니다. 따라서 '1.10000000'을 입력하면 '1.1'과 거의 같습니다. 나는 다음에 '1.11'을 넣고 작동하지만, 내가 사용하고있는 코드에서 임의의 문자가있다. '1.9'이후는 '1.10'또는 '1.11'이 아니므로 완전히 혼란스러워합니다. – user2387537

+0

@stark에 태그하는 것을 잊었습니다. – user2387537

+0

@ user2387537 : 문자열과 부동 소수점 숫자를 혼동하고 있습니다. 텍스트 위젯에'1.10'을 실제로 넘겨 준다면 문자열 "1.1"'로 해석 될 것입니다. 그러나 그 외에 무엇을 기대합니까? 이러한 이유 때문에 부동 소수점 숫자를 텍스트 위젯 인덱스로 사용해서는 안됩니다. 부동 소수점 숫자 만 룩앤필처럼 보입니다. tkinter 텍스트 위젯에서, "1.10"은 항상 "1.9"를 따릅니다. –