2

私はPythonにかなり慣れていません。これは、ヘルプデスク チケットをホストしている MySQL サーバーから情報を収集し、新しいチケットが到着するたびに (EasyGUI の「msgbox()」関数を使用して) メッセージ ボックスをポップアップ表示するスクリプトです。

問題は、ユーザーが「OK」をクリックするかどうかに関係なく、ポップアップ後にプログラムの処理を続行したいということです。それは私には問題ありません。

私はスレッド化を調べましたが、うまくいかないか、何か間違ったことをしたため、適切なガイドが必要です。これが私のコードです:

import MySQLdb
import time
from easygui import *

# Connect
db = MySQLdb.connect(host="MySQL.MyDomain.com", user="user", passwd="pass", db="db")
cursor = db.cursor()

# Before-and-after arrays to compare; A change means a new ticket arrived
IDarray = ([0,0,0])
IDarray_prev = ([0,0,0])

# Compare the latest 3 tickets since more than 1 may arrive in my time interval
cursor.execute("SELECT id FROM Tickets ORDER BY id DESC limit 3;")
numrows = int(cursor.rowcount)
for x in range(0,numrows):
   row = cursor.fetchone()
   for num in row:
      IDarray_prev[x] = int(num)
cursor.close()
db.commit()

while 1:
   cursor = db.cursor()
   cursor.execute("SELECT id FROM Tickets ORDER BY id DESC limit 3;")

   numrows = int(cursor.rowcount)
   for x in range(0,numrows):
      row = cursor.fetchone()
      for num in row:
         IDarray[x] = int(num)

   if(IDarray != IDarray_prev): 
      cursor.execute("SELECT Subject FROM Tickets ORDER BY id DESC limit 1;")
      subject = cursor.fetchone()
      for line in subject:
         # -----------------------------------------
         # STACKOVERFLOW, HERE IS THE MSGBOX LINE!!!
         # -----------------------------------------
         msgbox("A new ticket has arrived:\n"+line)

   # My time interval -- Checks the database every 8 seconds:
   time.sleep(8)
   IDarray_prev = IDarray[:]
   cursor.close()
   db.commit()
4

1 に答える 1

2

PythonGTK+を使用できます

非モーダルを使用して提供します

set_modal(False)
于 2012-04-05T18:07:19.257 に答える