私は繰り返し繰り返しの設定可能な遅延と番号で電話番号にメッセージを送信するためにユーザを可能にするGUIプログラムを書いています。使用gobject.timeout_add_seconds - セグメンテーションフォールト
QT Designerを使用してGUIを作成しましたが、今はその背後にコードを作成しようとしています。私は開始ボタンが押されたときにプログラムがメッセージを送信するようにしようとしていますが、GUIはフリーズしません。
私は新しいメッセージは、すべての1秒を送信する必要があるかどうかを確認するためにgobject.timeout_add_secondsを使用しようとしていますが、それはセグメンテーションフォールトを引き起こしているとき。
queueMessagesボタンはメッセージの送信を開始するために押されるたびに呼び出され、sendMessagesは、必要なメッセージを送信するために、すべての1秒を実行する必要があります。
これを行う簡単な方法(スレッド化など)があるかどうかを教えてください。私は他のアイディアにはオープンです。
ここに該当するコードがあります。
#!/usr/bin/python2.5
import sys, os
import time
import gobject
from PyQt4 import QtGui,QtCore
from smsBomb import *
class MyForm(QtGui.QMainWindow):
def __init__(self, parent=None):
#build parent user interface
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# Create button actions
QtCore.QObject.connect(self.ui.btnSendMessages, QtCore.SIGNAL('clicked()'), self.queueMessages)
# Check if we need to send any messages every 1s.
self.maintimer = gobject.timeout_add_seconds(1, self.sendMessages)
def queueMessages(self):
# Queue messages!
number = str(self.ui.txtNumber.text())
message = str(self.ui.txtMessage.text())
delay = int(self.ui.txtDelay.text())
repetitions = int(self.ui.txtRepetitions.text())
for i in range(repetitions):
os.system('dbus-send --dest=org.QGVDial.TextServer --session --print-reply /org/QGVDial/TextServer org.QGVDial.TextServer.Text array:string:"+1' + number + '" string:"' + message + '"')
#time.sleep(delay)
def sendMessages(self):
# Send Queued Messages as needed
print "Sending queued messages..."
return True
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = MyForm()
myapp.show()
sys.exit(app.exec_())
ありがとうございました!これはまさに私が必要としたものでした。 – xur17