嗨,我已经发送到GUI的线程工作程序链接,并直接从QThread更新GUI信息。像这儿:
class Worker(QThread):
def __init__(self, ui):
QThread.__init__(self)
self.running = False
self.ui = ui
def run(self):
self.running = True
while self.running:
info = self.check_info()
rows = len(info)
self.ui.tableWidget.setRowCount(rows)
self.ui.tableWidget.setColumnCount(6)
...
在主要QMainWindow
我只是添加
def __init__(self, parent=None):
.......
self.myworker = Worker(self.ui)
.....
这样的解决方案在PyQt5中非常不好吗?我是PyQt的新手。谢谢。如果我的解决方案不好,请帮助我修复它。
您不能也不能从辅助线程更新GUI,必须通过信号和插槽来完成:
为此pyqtSignal()
,我们将通过class创建一个信号,并将指示参数的类型,然后将其连接到所需的插槽,如下所示:
线:
class Worker(QThread):
list_of_dict_signals = pyqtSignal(list)
str_signal = pyqtSignal(str)
def __init__(self, parent=None):
QThread.__init__(self, parent)
self.running = False
def run(self):
self.running = True
while self.running:
info = self.check_info()
self.list_of_dict_signals.emit(info)
self.str_signal.emit("Requesting info")
界面:
def __init__(self, parent=None):
.......
self.myworker = Worker(self)
self.myworker.list_of_dict_signals.connect(self.onDataFromThread)
self.myworker.str_signal.connect(self.ui.statusbar.showMessage)
self.myworker.start()
def onDataFromThread(self, info):
rows = len(info)
self.ui.tableWidget.setRowCount(rows)
...
问题内容: 我有一个sql数据库,并且能够连接excel电子表格。但是,当我直接从excel更新表时,它并没有更新数据库,并且当我单击“刷新”时,所有输入的数据都不再在excel表中 是否可以在不使用任何查询的情况下从excel更新sql数据库? 问题答案: 有很多方法可以做到这一点。我建议使用类似的方法将数据从Excel推送到SQL Server。 您也可以尝试使用Where子句。
在Firebase Structure Your Data一节中,有一个关于以下示例的讨论,其中聊天消息存储在聊天会话ID下。 如何监听进行任何对话?在上设置将发送包含所有会话的DataSnapshot。如果有大量的记录,那将是不可行的。查找整个快照中的哪个子级实际上被更新是一件很困难的事情。 如果我选择直接将消息存储在下,而每个消息都包含字段以检查其所属位置。通过在上创建,我可以通过为设置值侦听
6.9.1.2.直接修改XML代码 另一种办法是直接修改XML代码。记住,所有用Eclipse工具所做的事情,在纯文本编辑器内也能做。要切换到XML代码视图,选择窗口底部的标签页status.xml,在Layout标签页后。这将会用标准XML编辑器打开文件。 第二种办法是直接修改XML代码。记住,凡是Eclipse工具能做的事情,纯文本编辑器也都能做。在窗口底部,Layout标签之右,就是stat
问题内容: 我正在建立HTML格式的PDF清单。在列表中,我想包含一个下载链接和一个打印按钮/链接。有什么方法可以直接打开PDF的“打印”对话框,而无需用户查看PDF或打开PDF查看器? 将PDF下载到隐藏的iframe中并触发使用JavaScript进行打印,这有一些变化吗? 问题答案: 根据以下评论,它不再可在现代浏览器中使用。 该问题演示了一种可能对您有所帮助的方法:静默打印嵌入式PDF 它
我试图显示一个图像的直方图,只显示一些颜色。我已经用JFreeChart和createXYLineChart实现了这一点,并通过遍历所有像素来获取所有数据。 为了加快速度,我尝试用“createhistogram”来完成它。我遵循了这个准则。 为了用新值更新图表,我使用了以下两种方法: setHistogram是一种方法,它根据激活的复选框(布尔红色、绿色和蓝色)返回HistogramDatase
问题内容: 我发布了Java TableModelListener和Live FeedListener的答案?,但我收到– kleopatra的评论 可以告诉我什么是更改通知者,接收更改事件,可能发生的情况,她真正的意思,因为当我尝试所有我知道我只从非常快的循环中收到RepaintManager异常的事情时, 我再也没有例外 我将其乘以50 x 1000矩阵, 使用prepareRenderer(