MySQL 데이터베이스에서 변경 사항을 확인하고 GTK 표시를 업데이트하는 프로그램을 만들고 있습니다. 검사를 계속하는 부분은 무한 루프에 있습니다.gtk 창이 닫힌 후 무한 루프가 종료됩니다.
내가 원하는 것은 일단 GTK 창이 닫히면 무한 루프를 벗어날 수 있다는 것입니다.
하지만 어떤 조건을 사용해야할지 모르겠다. 나는
if !window:
및
if window == None:
을 시도했지만 두 경우 모두, 그것은 작동하지 않습니다.
내 코드의 구조는 다음과 같다 :
while True:
# my code
while gtk.events_pending():
gtk.main_iteration()
# something to exit here
window.connect("destroy", gtk.main_quit())
배치하는 문제가 발생할 수 있습니다 "window.connect"경우 윈도우가 잘 닫 것 때문에 나는 모른다. 또한, 내가 루프 내에 배치하거나 루프 전에 배치하면 런타임 오류가 발생합니다 : mainloop 외부에서 호출됩니다.
다시 반복하려면 조건의 창 닫기를 사용하여 무한 루프를 종료하려면 어떻게합니까? 사용자가 Ctrl + C를 사용하지 못하도록하고 싶습니다.
미리 감사드립니다.
나는 이것을 시험해 보았다. check_DB라는 함수를 만들었습니다. 첫째로 나는 이것을 gobject.timeout_add (1000, check_DB)와 같이 호출하려고 시도했지만 작동하지 않는 것 같습니다. MySQL 데이터베이스에 대한 연결을 반복해서 만들고 싶지 않으므로이 비트를 기능 내부에서 수행하고 싶지는 않습니다. 그러나 connection 변수를 check_Db에 전달할 수 없습니다. 도와 주시겠습니까? – Antimony
간단하게하기 위해 연결 개체를 전역 변수로 만듭니다. http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created-them – anttix
@Antimony : win.connection을 설정하면 = MySQLdb.connect (...)'를 실행하면'win.check_DB'가 호출 될 때 사용할 수 있습니다. 또는 @anttix가 암시 하듯이 연결을 전역 변수로 만들 수 있습니다. – unutbu