항목 위젯과 함께 tkinter 타이머 사용

사용자 5473311
from  tkinter import * 
from  threading import Timer 
.......

def getdata(dval):
    global log,entryWidget,txtf,infile,lout
    ff="c:\\downloads\test\logs\\log1.log"
    flog=open(ff,encoding="utf-8")
    infile= flog.read()
    flog.close()  

def getlog(sval):
    global log,entryWidget,txtf,infile,lout
    txtf.delete ('1.0','end')
    inf =entryWidget.get().strip()
    if  inf == "scan":
      gdata = getdata("")
      txtf.insert (END,gdata)
   else:
     gdata=str(datetime.now( ))+"\n"
     txtf.insert (END,gdata)
   gdata=""

   ev=Timer(60,getlog,[lout])
   ev.start()

def runscan():
    global log,entryWidget,txtf,infile,lout
    root =Tk()
    root.title("Scan  log")t
    textFrame = Frame(root)
    txtf= Text(textFrame,width=60,height=18,font=("MS Sans Serif bold",8))
    entryWidget = Entry(textFrame)

    textFrame.grid(row=200,column=200)
    textFrame.bind("<Button-1>", getlog(lout)

    txtf.grid(row=0,column=1)

    entryWidget["width"] = 30
    entryWidget.bind('<Return>',getlog(10))
    entryWidget.grid(row=25,column=1)

    ev=Timer(60,getlog,[10])
    ev.start()

    root.mainloop()

if __name__ == "__main__":
    runscan()

타이머는 60 초마다 잘 작동하지만 Entrywidget은 작동하지 않습니다.
타이머를 꺼내면 Entrywidget이 정상적으로 작동합니다.
그래서 어딘가에 타이머 스레드가 위젯 입력을 잠급니다.
메인 루프의 타이머
에는 getlog 함수가 아닌 재설정 함수가 필요한 것 같습니다 .

브라이언 오클리

Timer 클래스를 사용할 필요가 없습니다. Tkinter는 미래에 코드를 실행할 수있는 방법을 가지고 있습니다. Timer 클래스의 문제점은 스레드를 사용하고 tkinter가 스레드로부터 안전하지 않다는 것입니다.

다음은 getlog60 초마다 실행하는 방법의 예입니다 . 한 번 호출하면 프로그램이 종료 될 때까지 1 분마다 실행됩니다.

def getlog():
    txtf.delete ('1.0','end')
    inf =entryWidget.get().strip()
    if  inf == "scan":
        gdata = getdata("")
        txtf.insert (END,gdata)
    else:
        gdata=str(datetime.now( ))+"\n"
        txtf.insert (END,gdata)
    gdata=""

    txtf.after(60000, getlog)

getdata("")차단할 수 있는 경우 에도 프로그램이 중단됩니다. 이 경우 스레드를 계속 사용해야하지만 스레드가 데이터를 가져 와서 스레드로부터 안전한 큐에 게시하고 GUI 스레드가 해당 큐를 폴링하도록해야합니다. 무엇을하는지 모르면 getdata더 구체적으로 말할 수 없습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

항목 위젯과 함께 tkinter 타이머 사용

분류에서Dev

tkinter 항목 위젯 .get이 데이터를 가져 오지 못함

분류에서Dev

Flutter에서 컨테이너 위젯과 함께 if 문을 사용하는 방법

분류에서Dev

ListView / GridView 항목과 함께 Storyboard를 사용하는 방법이 있습니까?

분류에서Dev

항목 위젯 아래에 Tkinter 레이블 위젯 설정

분류에서Dev

Android에서이 활동과 함께 Theme.AppCompat 테마 (또는 하위 항목)를 사용해야합니다.

분류에서Dev

c에서 구조체 항목과 함께 if 문 사용

분류에서Dev

ListView 항목과 함께 사용할 때 PopUpWindow가 잘립니다.

분류에서Dev

Tkinter 항목 위젯을 사용하여 함수를 통해 사용자가 입력 한 키를 길게 누를 수 없습니다.

분류에서Dev

matplotlib.pyplot과 함께 사용하면 Tkinter 창이 닫히지 않습니다.

분류에서Dev

항목 위젯 tkinter에서 데이터 저장

분류에서Dev

tkinter의 항목 위젯에 결과를 출력하는 방법

분류에서Dev

ssh 구성 항목과 함께 동적으로 얻은 호스트 이름 사용

분류에서Dev

Python-Tkinter는 스크롤 막대와 항목 위젯 사이의 공간을 제거합니다.

분류에서Dev

tkinter에서 항목 위젯의 유효성을 검사하는 방법을 이해할 수 없습니다.

분류에서Dev

핵심 데이터를 사용하는 동안 각 새 항목과 함께 테이블 상단의 테이블보기 컨트롤러에 새 항목 추가

분류에서Dev

목록과 함께 Scala 일치 케이스 사용

분류에서Dev

목록과 함께 foreach에서 조회 테이블 사용

분류에서Dev

이 활동과 함께 Theme.AppCompat 테마 (또는 하위 항목)를 사용해야합니다 (스택 오버플로를 통해 해결되지 않음).

분류에서Dev

진행률 표시 줄과 함께 타이머를 사용하여 다음 양식 열기

분류에서Dev

내부에 다른 목록이 포함 된 목록과 함께 'LoadfromCollection'사용

분류에서Dev

파일에서 읽은 항목 목록과 함께 사용자 정의 TableModel을 사용할 때 jtable을 업데이트하는 방법

분류에서Dev

로더 콘텐츠에 대한 업데이트를 트리거하는 UI 위젯과 함께 Fragment / Activity와 함께 Loader 사용

분류에서Dev

로더 콘텐츠에 대한 업데이트를 트리거하는 UI 위젯과 함께 Fragment / Activity와 함께 Loader 사용

분류에서Dev

여러 레이블 및 항목 위젯을 만들고 루프를 사용하여 Tkinter에서 데이터를 가져 오는 방법

분류에서Dev

SwiftUI 목록과 함께 NSManagedObject 사용

분류에서Dev

GPathResults 목록과 함께 max 사용

분류에서Dev

목록과 함께 Lambda 사용

분류에서Dev

Python : 목록과 함께 루프 사용

Related 관련 기사

  1. 1

    항목 위젯과 함께 tkinter 타이머 사용

  2. 2

    tkinter 항목 위젯 .get이 데이터를 가져 오지 못함

  3. 3

    Flutter에서 컨테이너 위젯과 함께 if 문을 사용하는 방법

  4. 4

    ListView / GridView 항목과 함께 Storyboard를 사용하는 방법이 있습니까?

  5. 5

    항목 위젯 아래에 Tkinter 레이블 위젯 설정

  6. 6

    Android에서이 활동과 함께 Theme.AppCompat 테마 (또는 하위 항목)를 사용해야합니다.

  7. 7

    c에서 구조체 항목과 함께 if 문 사용

  8. 8

    ListView 항목과 함께 사용할 때 PopUpWindow가 잘립니다.

  9. 9

    Tkinter 항목 위젯을 사용하여 함수를 통해 사용자가 입력 한 키를 길게 누를 수 없습니다.

  10. 10

    matplotlib.pyplot과 함께 사용하면 Tkinter 창이 닫히지 않습니다.

  11. 11

    항목 위젯 tkinter에서 데이터 저장

  12. 12

    tkinter의 항목 위젯에 결과를 출력하는 방법

  13. 13

    ssh 구성 항목과 함께 동적으로 얻은 호스트 이름 사용

  14. 14

    Python-Tkinter는 스크롤 막대와 항목 위젯 사이의 공간을 제거합니다.

  15. 15

    tkinter에서 항목 위젯의 유효성을 검사하는 방법을 이해할 수 없습니다.

  16. 16

    핵심 데이터를 사용하는 동안 각 새 항목과 함께 테이블 상단의 테이블보기 컨트롤러에 새 항목 추가

  17. 17

    목록과 함께 Scala 일치 케이스 사용

  18. 18

    목록과 함께 foreach에서 조회 테이블 사용

  19. 19

    이 활동과 함께 Theme.AppCompat 테마 (또는 하위 항목)를 사용해야합니다 (스택 오버플로를 통해 해결되지 않음).

  20. 20

    진행률 표시 줄과 함께 타이머를 사용하여 다음 양식 열기

  21. 21

    내부에 다른 목록이 포함 된 목록과 함께 'LoadfromCollection'사용

  22. 22

    파일에서 읽은 항목 목록과 함께 사용자 정의 TableModel을 사용할 때 jtable을 업데이트하는 방법

  23. 23

    로더 콘텐츠에 대한 업데이트를 트리거하는 UI 위젯과 함께 Fragment / Activity와 함께 Loader 사용

  24. 24

    로더 콘텐츠에 대한 업데이트를 트리거하는 UI 위젯과 함께 Fragment / Activity와 함께 Loader 사용

  25. 25

    여러 레이블 및 항목 위젯을 만들고 루프를 사용하여 Tkinter에서 데이터를 가져 오는 방법

  26. 26

    SwiftUI 목록과 함께 NSManagedObject 사용

  27. 27

    GPathResults 목록과 함께 max 사용

  28. 28

    목록과 함께 Lambda 사용

  29. 29

    Python : 목록과 함께 루프 사용

뜨겁다태그

보관