У меня проблема, когда я запускаю следующий скрипт, он не завершает команду 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)