weixin_52478533 2023-04-17 09:47 采纳率: 100%
浏览 25
已结题

Qt如何在多线程中显示文字

在用python和Qt写一个小的程序,用多线程来着,但是现在多线程里想让QtextEdit显示几行文字却始终无法显示。这是为什么呢?
选了相关的一部分代码写在下面了,调试的时候发现可以进if判断句,但就是打印不出文字

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5.Qt import QThread
from bs4 import BeautifulSoup as bs
import requests
import pandas as pd
import numpy as np
import datetime

# 使用多线程,此为推荐观测点搜索线程
class search(QThread):
    def __init__(self):
        super().__init__()
    def run(self):
        self.location = pd.read_csv("./location.csv")
        self.location_arr = np.array(self.location)

        self.data = MyWindow()
        self.people_number = self.data.people_number.value()
        #self.people_number.split(' ')
        #self.people_number = int(self.people_number)
        #print(self.people_number)
        self.money = self.data.money.value()
        #self.money.split(' ')
        #self.money = self.money.toInt()
        #print(self.money)
        self.today = datetime.date.today()
        self.month = self.today.month
        self.recommand_place = []
        self.recommand_district = [] #推荐观测地所在区
# ???为什么显示不出来啊
        if self.people_number <=2:
            self.recommand_place.append(self.location_arr[0][5])#古北口
            self.recommand_place.append(self.location_arr[0][8])#百花山
            self.recommand_district.append(self.location_arr[1][5])
            self.recommand_district.append(self.location_arr[1][8])
            self.data.recommand_day.append("古北口,百花山")
            self.data.recommand_day.repaint()

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        #self.ui =
        self.init_ui()

    def init_ui(self):
        self.ui = uic.loadUi("./astronomy.ui")
        self.people_number = self.ui.spinBox #人数
        self.money = self.ui.spinBox_2        #预算
        self.require = self.ui.comboBox        #特殊要求
        self.search_btn = self.ui.pushButton
        self.clear_btn = self.ui.pushButton_2
        self.recommand_day = self.ui.textEdit
        self.search_btn.clicked.connect(self.search)
        #self.search_btn.clicked.connect(self.weather)
#搜索函数
    def search(self):
        self.search = search()
        self.search.start()

    def weather(self):
        self.weather = weather()
        self.weather.start()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    w.ui.show()

    app.exec()

  • 写回答

2条回答 默认 最新

  • 赵4老师 2023-04-17 09:54
    关注

    看Qt的官方例子代码里,是怎么在线程中让QTextEdit显示文字的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 已采纳回答 4月22日
  • 创建了问题 4月17日