自己做了个下拉搜索框满足自己需求的,给大家参考参考
点击搜索窗口外自动隐藏
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtPrintSupport import*
import sys
class Searchtable_ui(QWidget):
def __init__(self, parent=None):
super(Searchtable_ui, self).__init__(parent)
self.setWindowFlags(Qt.Dialog|Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint)
#设置close时释放内存
# self.setAttribute(Qt.WA_DeleteOnClose)
self.resize(500,300)
verticalLayout = QVBoxLayout()
verticalLayout.setContentsMargins(0, 0, 0, 0)
self.lineedit = QLineEdit()
self.lineedit.setClearButtonEnabled(True)
verticalLayout.addWidget(self.lineedit)
self.searchtable_tablewidget = QTableWidget()
self.searchtable_tablewidget.setColumnCount(5)
self.searchtable_tablewidget.setRowCount(5)
self.searchtable_tablewidget.setSelectionMode(QAbstractItemView.SingleSelection)
self.searchtable_tablewidget.setEditTriggers(QTableView.NoEditTriggers)
self.searchtable_tablewidget.setSelectionBehavior(QAbstractItemView.SelectRows)
verticalLayout.addWidget(self.searchtable_tablewidget)
self.setLayout(verticalLayout)
def event(self, event):
#重写信号使点击窗口外隐藏本窗口
if event.type() == QEvent.ActivationChange:
if QApplication.activeWindow() != self:
self.hide()
return QWidget.event(self, event)
class ui(QWidget):
def __init__(self):
super(ui,self).__init__()
self.setFixedSize(300,500)
self.searchtable = Searchtable_ui()
layout = QHBoxLayout()
self.linedit = QLineEdit()
layout.addWidget(self.linedit)
pushButton = QPushButton()
layout.addWidget(pushButton)
self.setLayout(layout)
pushButton.clicked.connect(self.button_click)
def button_click(self):
pos = self.linedit.mapToGlobal(QPoint(0,0))
pos.setY(pos.y()+30)
self.searchtable.move(pos)
self.searchtable.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = ui()
window.show()
sys.exit(app.exec())