0

我是使用 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_()

这是我的计算机上的问题:

问题

谢谢您的帮助。

4

0 回答 0