我是使用 pyQT 作为 GUI 的新手,但有几年使用 Java GUI 的经验。
我有一个 QComboBox 用于选择一个选项,然后有一个提交按钮来启动绘图的计算,如果有选择的话。一切都很好,除了当 matplotlib 显示绘图时,QComboBox 的下拉列表与选择窗口或绘图窗口分开。它甚至占据了我屏幕的顶层,所以在其他窗口中工作时我无法保持绘图打开。作为 pyQT 的新手,我不知道从哪里开始解决这个问题。
我正在使用来自 Anaconda 的 PyQt5 版本 5.9.2 而我的操作系统是 macOS Mojave,10.14.6
这是我的代码的一个版本,运行时会产生错误:
from PyQt5.QtWidgets import *
import numpy as np
import matplotlib.pyplot as plt
app = QApplication([])
window = QWidget()
layout = QGridLayout()
layout.setSpacing(10)
label = QLabel("Choose an option")
layout.addWidget(label, 0, 0, 1, 3)
button = QPushButton("Submit")
layout.addWidget(button, 1, 1)
ifo_choices = { 'x','x^2','e^x','sin(x)' }
choose = QComboBox()
choose.addItems(ifo_choices)
layout.addWidget(choose, 2, 1)
def submit_pref():
pref = choose.currentText()
freq = np.linspace(0,10,100)
if(pref == 'x'):
y = freq
elif(pref == 'x^2'):
y = freq**2
elif(pref == 'e^x'):
y = np.e**freq
elif(pref == 'sin(x)'):
y = np.sin(freq)
plt.plot(freq, y)
plt.show()
button.clicked.connect(submit_pref)
window.setLayout(layout)
window.show()
app.exec_()
这是我的计算机上的问题:

谢谢您的帮助。