Tkinter 스크롤 바의 이상한 bahavior를 제외하고 있습니다. 내 GUI는 기본적으로 Tkinter 텍스트 위젯을 사용합니다. 스크롤바와 관련된/참조됩니다. 텍스트 위젯 자체 파이썬 콘솔 항목에서파이썬 Tkinter 스크롤바 문제
self.textFrame = Tkinter.LabelFrame (self.mainFrame,padx=0,pady=0,width=200,height=100)
self.textFrame.grid(row=5, column =1, sticky = "NW", padx = 5, pady = 10)
self.consLable = Tkinter.Label (self.textFrame,text = "Log-Console:",font ="Verdana 8 bold")
self.consLable.grid (row =6,column =1, sticky = "NW", padx = 5, pady = 1)
self.consText= Tkinter.Text(self.textFrame, wrap = "word")
self.consText.grid(row =7,column =1, rowspan =4)
self.consText.tag_configure("stderr", foreground="#b22222")
self.scrollText= Tkinter.Scrollbar(self.textFrame,command = self.consText.yview)
self.scrollText.grid(row =7,column =2,rowspan =4,sticky='NSEW')
self.consText.config(yscrollcommand = self.scrollText.set)
# Referencing output location of the console "print or sys.stderr" methods
sys.stdout = gemeindesteckbrief__SupportTools__.TextRedirector(self.consText, "stdout")
sys.stderr= gemeindesteckbrief__SupportTools__.TextRedirector(self.consText, "stderr")
은 sys.stdout
및 sys.stderr
를 사용하여 삽입됩니다. 텍스트를 삽입하려면 .sys.stderr.write
또는 print
메소드를 덮어 쓰고 텍스트를 Tkinter 텍스트 위젯에 쓰는 지원 클래스가 사용됩니다. 또한 위젯으로 클릭하고 마우스 휠을 사용하여 스크롤, 예상대로 위젯이 작동하는 텍스트에 텍스트를 삽입
class TextRedirector(object):
def __init__(self,widget, tag):
self.targetwidget = widget
self.targettag = tag
#@Override the sys.stdout & sys.stderr methods to write to the text widget instead of the python console
def write(self, str):
self.targetwidget.configure(state="normal")
self.targetwidget.insert("end", str, (self.targettag,))
self.targetwidget.configure(state="disabled")
또한 위로 스크롤 작품 아래 버튼을 사용하여, 잘 작동합니다. 모든 문제는 막대를 사용하여 위아래로 움직이기 시작합니다. 효과가 TclError입니다 : 예상 부동 소수점 숫자 만 가지고 "0,0028"
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\ArcGIS10.0\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\Python26\ArcGIS10.0\lib\lib-tk\Tkinter.py", line 3156, in yview
self.tk.call((self._w, 'yview') + what)
TclError: expected floating-point number but got "0,0028"
숫자와 같은 소리는 로컬 소수점 (',')으로 형식화됩니다. –
'self.scrollText.set'을'lambda '로 변경하면 : self.scrollText.set (s.replace (', ','. '))'뭔가 바뀌 었습니까? 어쩌면 당신은 방법을 포장해야합니다. 하지만 왜 오류가 발생하는지 모르겠습니다. – User
Python, Tkinter, Tk, Tcl의 정확한 버전은 무엇입니까? –