Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PYQT5 qlineedit不';我藏起来后就不会出现了_Python_User Interface_Matplotlib_Pyqt5 - Fatal编程技术网

Python PYQT5 qlineedit不';我藏起来后就不会出现了

Python PYQT5 qlineedit不';我藏起来后就不会出现了,python,user-interface,matplotlib,pyqt5,Python,User Interface,Matplotlib,Pyqt5,以这个玩具为例。我想在默认的matplotlib工具栏中添加一个line_edit,但只有在执行某个操作后,用户才能看到它,这里是一个按钮单击 单击按钮后,不会显示编辑行,但由于某种原因,isVisible()输出True。如果行编辑在默认情况下是可见的,并且我尝试使用self.line\u edit.hide()将其隐藏,则它将保持可见,但isVisible()返回False。所以它不会自我更新 这到底是怎么回事?为什么行_编辑仍然隐藏?有什么建议吗 import sys from PyQt5

以这个玩具为例。我想在默认的matplotlib工具栏中添加一个line_edit,但只有在执行某个操作后,用户才能看到它,这里是一个按钮单击

单击按钮后,不会显示编辑行,但由于某种原因,
isVisible()
输出True。如果行编辑在默认情况下是可见的,并且我尝试使用
self.line\u edit.hide()
将其隐藏,则它将保持可见,但
isVisible()
返回False。所以它不会自我更新

这到底是怎么回事?为什么行_编辑仍然隐藏?有什么建议吗

import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QLineEdit, QVBoxLayout, QWidget, QPushButton
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Dummy')

        self.figure = plt.figure()
        self.canvas = FigureCanvas(self.figure)
        self.toolbar = NavigationToolbar2QT(self.canvas, self)
        self.ax = self.figure.add_subplot(111)

        self.line_edit = QLineEdit(self)
        self.line_edit.setVisible(False)
        self.toolbar.addWidget(self.line_edit)

        self.btn = QPushButton('Show line', self)
        self.btn.clicked.connect(self.show_line_edit)

        layout = QVBoxLayout()
        layout.addWidget(self.toolbar)
        layout.addWidget(self.canvas)
        layout.addWidget(self.btn)
        self.setLayout(layout)

        self.show()

    def show_line_edit(self):
        self.line_edit.show()
        print("self.line_edit.isVisible(): ")
        print(self.line_edit.isVisible())
        self.line_edit.setFocus()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

NavigationToolbar2QT
继承自
qtwidkets.QToolBar
,并根据:

注意:您应该使用QAction::setVisible()来更改小部件的可见性。使用QWidget::setVisible()、QWidget::show()和QWidget::hide()不起作用

所以,为了解决这个问题,你可以

def initUI(self):

    ....

    self.line_edit = QLineEdit(self)
    self.line_edit.setVisible(False)
    self.line_action = self.toolbar.addWidget(self.line_edit)

    ....

def show_line_edit(self):
    self.line_action.setVisible(True)
    ....

NavigationToolbar2QT
继承自
qtwidkets.QToolBar
,并根据:

注意:您应该使用QAction::setVisible()来更改小部件的可见性。使用QWidget::setVisible()、QWidget::show()和QWidget::hide()不起作用

所以,为了解决这个问题,你可以

def initUI(self):

    ....

    self.line_edit = QLineEdit(self)
    self.line_edit.setVisible(False)
    self.line_action = self.toolbar.addWidget(self.line_edit)

    ....

def show_line_edit(self):
    self.line_action.setVisible(True)
    ....

您没有将
QLineEdit
添加到布局中。只是说。@GiacomoAlzetta我将它添加到工具栏,然后将工具栏添加到布局中。您没有将
QLineEdit
添加到布局中。只是说,@GiacomoAlzetta我将它添加到工具栏,然后将工具栏添加到布局中。