Python темы GUI - PullRequest
       1

Python темы GUI

1 голос
/ 23 февраля 2012

У меня небольшая проблема при работе с PyQt4 и многопоточным пакетом:

Мой код выглядит так:

def goForwardToSamples(self):
    self.main.dataSet = DataSetProvider(self.main.sourceFile)
    self.ui = Ui_NeuralPredictor2()
    self.ui.setupUi(self)
    ParalelGui(self.ui).start()
    self.connectSignalsWindow2()
def connectSignalsWindw2(self):
   # DOING SOME REAL SERIOUS COMPUTATION ...

=> теперь def run (self): в классе ParalelGui выглядит так:

def run(self):
    self.gui.show()

=> Я просто хочу проверить, будет ли мой графический интерфейс запускать параллельные вычисления.

Мне кажется, я знаю, в чем проблема. У меня есть QtableView, который заполняется данными, где я написал ( ДЕЛАЕТ НЕКОТОРЫЕ СЕРЬЕЗНЫЕ ВЫЧИСЛЕНИЯ .. ) Этот QtableView, конечно, является частью пользовательского интерфейса, который я отправляю в поток ParalelGui для показа. Я не совсем уверен, как заставить это работать ... В основном я хотел бы иметь часть GUI, пронизанную и уже показанную, в то время как другая часть динамически заполняется в другом потоке.

То, что происходит сейчас, это типичное «вы не заправили свой графический интерфейс» ... очень ценная помощь

1 Ответ

3 голосов
/ 23 февраля 2012

Несмотря на то, что ваш пример сильно ограничен, я собираюсь сделать попытку того, что вы здесь делаете ...

Мне кажется, что вы делаете что-то задом наперед и пытаетесь показатьВаш графический интерфейс в потоке, делая тяжелые вычисления в вашем основном потоке?

Что вы действительно должны делать, так это создавать и показывать графический интерфейс пользователя в главном потоке и выполнять тяжелые вычисления в отдельном рабочем потоке.Этот рабочий поток может затем подать сигнал, когда данные будут готовы, к которому ваш основной поток может подключиться, и быстро обновить вашу таблицу.Таким образом, вы не блокируете свой основной поток.Эмпирическое правило никогда не делает ничего тяжелого в главном потоке.Он предназначен для графического интерфейса и его событий.

Также убедитесь, что вы используете класс QThread, а не модуль потоков Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...