[완료]PyQt (또는 Qt) 진행 표시줄 구현 방식에 질문 있습니다

bluekyu의 이미지

진행 표시줄 구현 방식에 관해서 질문이 있습니다.

레퍼런스의 예제나 인터넷에 예시들을 보면, 반복 수행하는 구역 내에 진행 표시줄(QProgressBar) 또는 진행 표시 대화상자(QProgressDialog)의 setValue 메소드를 사용하여 값을 할당하여 이들을 업데이트 하는 것으로 되어 있습니다.

그런데 제가 현재 구현하고자 하는게, 반복이 수행되는 구역(클래스의 메소드 내에 있음)과 진행 표시줄이 업데이트 되는 구역을 따로 분리시키고 싶습니다.

원래 반복문 실행되는 부분이 GUI 부분과 따로 모듈화 되어 있습니다. 그래서 GUI 부분의 진행표시줄을 업데이트 시키려면 반복문이 실행되는 객체의 변수를 계속 setValue 해주어야 하는데, GUI에서 객체의 메소드를 실행시켜버리면 그 다음이 진행되지 않아서 진행표시줄을 업데이트할 수가 없습니다.

생각해본게, GUI 쪽에서 객체의 변수를 계속 감시하면서, 일정 시간마다 업데이트하는 방법이 있을 것 같은데 어떻게 구현을 해야 할지 모르겠습니다.

다른 구현 방식이나 참고 자료를 알려주세요. 그리고 GUI는 Qt나 PyQt 둘다 상관 없습니다.

감사합니다.

세벌의 이미지

gtk+ progress bar 찾아보니 http://developer.gnome.org/gtk/2.24/GtkProgressBar.html 도움 되시길...

bluekyu의 이미지

답변 감사합니다. 그런데 어느 부분에서 도움을 얻어야할 지 모르겠습니다... 혹시 pulse 부분인가요?

어쨌든, 다행히도 문제에 해법은 찾았습니다.
http://www.qtcentre.org/wiki/index.php?title=Keeping_the_GUI_Responsive
에서 꼭 맞는 해법을 얻을 수 있었네요.

멀티쓰레드로 문제를 해결했습니다.

/*** Signature ******************
* blog: http://blog.bluekyu.me/ *
********************************/

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.