Python PYQT5 qlineedit不';我藏起来后就不会出现了
以这个玩具为例。我想在默认的matplotlib工具栏中添加一个line_edit,但只有在执行某个操作后,用户才能看到它,这里是一个按钮单击 单击按钮后,不会显示编辑行,但由于某种原因,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
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我将它添加到工具栏,然后将工具栏添加到布局中。