2017-12-11 2 views
1

마우스 커서가 텍스트 위젯에있을 때 마우스 휠 스크롤이 작동하는 GUI에서 텍스트 상자를 만들었습니다. 마우스 커서가 텍스트 위젯에 없을 때 나는 그것을 할 수 있기를 원합니다. 이벤트에 마우스가있는 레이블이 여러 개 있습니다. 텍스트가 전체 텍스트 위젯에 비해 너무 길 때로는 마우스 커서가 내 레이블에있는 동안 아래로 스크롤해야합니다. 그 이유는 마우스 커서가 레이블에 없으면 텍스트가 삭제되어 레이블에있는 동안 스크롤을 수행해야하기 때문입니다.Python : 마우스 커서가 텍스트 상자 (tkinter)에 있지 않을 때 텍스트 상자에서 마우스 휠로 스크롤

def mousewheel(event): 
     textbox.yview_scroll(-1*(event.delta/120), "units") 

textbox = Text(ctr_mid, height=30, width=60, font="Arial") 
    textbox.grid(row=6,sticky=S) 
    textbox.bind_all("<MouseWheel>", mousewheel) 

나는 온라인 솔루션을 검토 한 온라인 mouswheel 기능을 발견하지만 실행하려고 할 때이 오류가 얻을 :

그것은 여기 내 첫 번째 게시물입니다
Traceback (most recent call last): 
    File "C:\Users\Homie\AppData\Local\Programs\Python\Python36- 
32\lib\tkinter\__init__.py", line 1699, in __call__ 
    return self.func(*args) 
    File "C:\Users\Homie\PycharmProjects\bluescreen\Game.py", line 402, in 
mousewheel 
self.textbox.xview_scroll(-1*(event.delta/120), "units") 
    File "C:\Users\Homie\AppData\Local\Programs\Python\Python36- 
32\lib\tkinter\__init__.py", line 1724, in xview_scroll 
self.tk.call(self._w, 'xview', 'scroll', number, what) 
_tkinter.TclError: expected integer but got "1.0" 

그래서 난 경우 사과를 나는 실수를 저질렀다.

+3

루트 ('tk.Tk') 위젯에'bind_all' 만하면됩니다. –

+0

나는 그것을했지만 _tkinter.TclError : 예상 된 정수는 있지만 "1.0"오류가 발생합니다. 바인딩 할 bind_all 변경 시도했다. 오류가 발생하지 않았지만 스크롤이 작동하지 않았습니다. – Chris

+1

글쎄, 줄 번호가 뭐야? 질문에 포함 시켰습니까? –

답변

1

나는 또한 초보자이며 이것은 나의 첫 번째 게시물입니다. 그러나 나는 똑같은 오류가 있었고 그것을 꽤 쉽게 풀었다.

게시 한 오류 메시지에 정수가 필요하지만 부동 소수점 ("1.0")이 표시된다고 나와 있습니다. 따라서 "-1 * (event.delta/120)"의 결과가 float가 아닌 정수가되도록해야합니다. 그러므로 함수의 마우스 휠에 대한 새로운 코드는 다음과 같습니다 :

def mousewheel(event): 
    textbox.yview_scroll(int(-1*(event.delta/120)), "units") 
관련 문제