사용자가 구성 가능한 지연 및 반복 횟수로 전화 번호로 메시지를 반복적으로 보낼 수있는 GUI 프로그램을 작성 중입니다.gobject.timeout_add_seconds 사용 - 분할 오류
QT 디자이너를 사용하여 GUI를 만들었으므로 이제 코드를 만들려고합니다. 시작 버튼을 눌렀을 때 프로그램에서 메시지를 보내기 시작하지만 GUI를 정지시키지 않으려 고합니다.
gobject.timeout_add_seconds를 사용하여 새 메시지를 매 1 초마다 전송해야하는지,하지만 세그먼트 오류가 발생하는지 확인하려고합니다.
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