在 GUI PyQT4 旁边线程化任务
Threading a task beside a GUI PyQT4
所以我正在尝试 运行 PyQT GUI,而另一个函数正在后台收集信息。如果找到信息,GUI 应该自行更新。
我是线程的新手,所以我用谷歌搜索了很多并找到了一些很好的方法,尽管它不能正常工作。
当我 运行 程序时,它会在 3 秒后自行结束。
也许你看到我犯了一些重大错误。
这是我试图获得的基本代码运行
class scan_Thread(QThread):
def __init__(self, samp_rate, band, speed, ppm, gain, args, prn):
QThread.__init__(self)
self.samp_rate=samp_rate
self.band=band
self.speed=speed
self.ppm=ppm
self.gain=gain
self.args=args
self.prn=prn
def __del__(self):
self.wait()
def run(self):
do_scan(self.samp_rate, self.band, self.speed,
self.ppm, self.gain, self.args, self.prn)
def start_gui():
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
#app.exec_()
#sys.exit()
def main(options = None):
def printfunc(found_list):
for info in sorted(found_list):
print info
get_thread = scan_Thread(options.samp_rate, options.band, options.speed,
options.ppm, options.gain, options.args, printfunc)
get_thread.start()
start_gui()
谢谢!
Qt 类 和 PyQt 的许多对象都需要启动一些 Application 类型的对象(QCoreApplication、QtGuiApplication 或 QApplication),但这些对象中只有一个必须存在。
在您的特定情况下,QThread 需要它。前面的类负责生成必要的循环。
所以你应该修改你的代码如下:
def main(options = None):
app = QtGui.QApplication(sys.argv) // before creating any PyQt object.
def printfunc(found_list):
for info in sorted(found_list):
print info
get_thread = scan_Thread(options.samp_rate, options.band, options.speed,
options.ppm, options.gain, options.args, printfunc)
get_thread.start()
window = Window()
window.show()
sys.exit(app.exec_())
所以我正在尝试 运行 PyQT GUI,而另一个函数正在后台收集信息。如果找到信息,GUI 应该自行更新。
我是线程的新手,所以我用谷歌搜索了很多并找到了一些很好的方法,尽管它不能正常工作。
当我 运行 程序时,它会在 3 秒后自行结束。
也许你看到我犯了一些重大错误。
这是我试图获得的基本代码运行
class scan_Thread(QThread):
def __init__(self, samp_rate, band, speed, ppm, gain, args, prn):
QThread.__init__(self)
self.samp_rate=samp_rate
self.band=band
self.speed=speed
self.ppm=ppm
self.gain=gain
self.args=args
self.prn=prn
def __del__(self):
self.wait()
def run(self):
do_scan(self.samp_rate, self.band, self.speed,
self.ppm, self.gain, self.args, self.prn)
def start_gui():
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
#app.exec_()
#sys.exit()
def main(options = None):
def printfunc(found_list):
for info in sorted(found_list):
print info
get_thread = scan_Thread(options.samp_rate, options.band, options.speed,
options.ppm, options.gain, options.args, printfunc)
get_thread.start()
start_gui()
谢谢!
Qt 类 和 PyQt 的许多对象都需要启动一些 Application 类型的对象(QCoreApplication、QtGuiApplication 或 QApplication),但这些对象中只有一个必须存在。
在您的特定情况下,QThread 需要它。前面的类负责生成必要的循环。
所以你应该修改你的代码如下:
def main(options = None):
app = QtGui.QApplication(sys.argv) // before creating any PyQt object.
def printfunc(found_list):
for info in sorted(found_list):
print info
get_thread = scan_Thread(options.samp_rate, options.band, options.speed,
options.ppm, options.gain, options.args, printfunc)
get_thread.start()
window = Window()
window.show()
sys.exit(app.exec_())