Текстовое поле не отображается на рисунке matplotlib - PullRequest
0 голосов
/ 06 марта 2019

У меня проблема, когда я запускаю следующий скрипт, он не завершает команду self.add_box в функции assign_text().Я протестировал его, и он полностью проходит через функцию add_box(), он просто не отображает текстовое поле на рисунке.Любая помощь будет оценена!

То, что я ожидаю, произойдет, если он откроет 2 окна, во-первых, это цифра пиплота, а во-вторых, QWidget.Когда вы нажимаете кнопку на QWidget, он должен поместить новое текстовое поле на фигуру pyplot.Прямо сейчас вы нажимаете кнопку, и на рисунке пиплота не появляется ничего нового.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPlainTextEdit, QPushButton
import matplotlib.pyplot as plt

class Failure_Tree():
    def __init__(self):
        self.fig, self.ax = plt.subplots()
        self.ax.set_xlim([0, 100])
        self.ax.set_ylim([0, 100])
        self.fig.show()

    def add_box(self, text, posx, posy):
        # these are matplotlib.patch.Patch properties
        props = dict(boxstyle='round', facecolor='wheat', alpha=1)
        # place a text box
        self.ax.text(posx, posy, text, bbox=props, fontsize=14, horizontalalignment='center', verticalalignment='center')

    def window(self):
        self.app = QApplication(sys.argv)
        self.w = QWidget()

        self.w.resize(640, 480)

        self.textBox = QPlainTextEdit(self.w)
        self.textBox.move(250, 120)

        button = QPushButton("click me", self.w)
        button.move(20, 80)

        self.w.show()

        button.clicked.connect(
            lambda: self.assign_text())

    def assign_text(self):
        text = self.textBox.document().toPlainText()
        self.add_box('hello World', 50, 50)
        self.w.close()


F = Failure_Tree()
F.window()
F.add_box('Bye World!', 0, 0)

Обновление:

Я решил исходную проблему, но теперь проблема возникает, когда я запускаюкод в режиме ожиданияОбновленный код ниже, он отлично работает в Spyder, но вылетает в IDLE после создания нового текстового поля.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPlainTextEdit, QPushButton
import matplotlib.pyplot as plt

class Failure_Tree():
    def __init__(self):
        self.fig, self.ax = plt.subplots()
        self.ax.set_xlim([0, 100])
        self.ax.set_ylim([0, 100])
        self.fig.show()

    def add_box(self, text, posx, posy):
        # these are matplotlib.patch.Patch properties
        props = dict(boxstyle='round', facecolor='wheat', alpha=1)
        # place a text box
        self.ax.text(posx, posy, text, bbox=props, fontsize=14, horizontalalignment='center', verticalalignment='center')

        self.fig.canvas.draw()

    def window(self):
        self.app = QApplication(sys.argv)
        self.w = QWidget()

        self.w.resize(640, 480)

        self.textBox = QPlainTextEdit(self.w)
        self.textBox.move(250, 120)

        button = QPushButton("click me", self.w)
        button.move(20, 80)

        self.w.show()

        button.clicked.connect(
            lambda: self.assign_text())


    def assign_text(self):

        text = self.textBox.document().toPlainText()
        self.add_box('hello World', 50, 50)
        self.w.close()
        self.app.exec_()


F = Failure_Tree()
F.window()
F.add_box('Bye World!', 0, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...