【发布时间】:2019-01-19 07:56:10
【问题描述】:
到目前为止,我所写内容的目的是在我的 GUI 中有一个“温度”按钮,按下该按钮会打开我单独制作的 matplotlib 图 (mplwidget.py)。
但是,当我运行代码时,应用程序和小部件同时打开,并且温度按钮似乎没有任何功能(即使我关闭小部件,按下按钮也不会再次打开它)。
import sys
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton, QAction, QMessageBox
from PyQt5.uic.properties import QtGui
from mplwidget import animate #import animation widget
class window(QMainWindow):
def __init__(self):
super(window, self).__init__()
self.setGeometry(50, 50, 500, 300)
self.setWindowTitle('Temperature Control')
self.setWindowIcon(QIcon('adn.png'))
extractAction = QAction('&Quit', self)
extractAction.setShortcut('Ctrl+Q')
extractAction.setStatusTip('leave the app')
extractAction.triggered.connect(self.close_application)
self.statusBar()
mainMenu = self.menuBar()
fileMenu = mainMenu.addMenu('&File')
fileMenu.addAction(extractAction)
self.home()
def home(self):
btn = QPushButton('quit', self)
btn.clicked.connect(self.close_application)
btn.resize(btn.sizeHint())
btn.move(0, 100)
button = QPushButton('Temperature',self)
button.clicked.connect(self.opengraph)
button.move(50,200)
self.show()
def opengraph(self):
animate()
def close_application(self):
choice = QMessageBox.question(self, 'Message',
"Are you sure to quit?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No)
if choice == QMessageBox.Yes:
sys.exit()
else:
pass
if __name__ == "__main__":
def run():
app = QApplication(sys.argv)
Gui = window()
sys.exit(app.exec_())
run()
mplwidget 在下面
def GraphWidget():
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
Time = []
Temp = []
def animate(i):
x = datetime.datetime.now()
y = numpy.random.randint(48,52)
Time.append(x)
Temp.append(int(y))
# print (Temp)
ax1.plot(Time,Temp)
ani = animation.FuncAnimation(fig,animate, interval=1000)
plt.show()
【问题讨论】:
-
不能调用模块。相反,您可能会在模块中调用一个函数;类似
mplwidget.showmywindow()。 -
你可以发布
mplwidget.py? -
当然,我现在就这么做@S.Nick
-
@ImportanceOfBeingErnest 你是这个意思吗?:def opengraph(self): mpl = mplwidget() mpl.show()
-
当您执行
import mymodule时,代码会直接执行。相反,您希望将其放入可以从导入脚本中调用的函数中。
标签: python matplotlib button pyqt5