Pal*_*alu 5 python events qcombobox drop-down-menu pyqt5
我一直试图让QComboBoxPyQt5从数据库表中填充.问题是试图找到一种识别其上的点击事件的方法.
在我的GUI中,我的组合框最初是空的,但是在单击它时我希望click事件激活我的方法以与数据库通信并填充下拉列表.到目前为止,似乎没有用于组合框的单击事件的内置事件处理程序.我希望我错了.我希望有人能够告诉我有办法做到这一点.
我在这个用例中找到的最好的文章来自这个指向PyQt4的链接QComboBox:
我还发现另一个包含a的漂亮图像的链接QComboBox.第一个元素似乎是一个标签后跟一个列表:
您可以覆盖showPopup方法来实现此目的,无论下拉列表如何打开(即通过鼠标,键盘或快捷方式),都可以使用:
from PyQt5 import QtCore, QtWidgets
class ComboBox(QtWidgets.QComboBox):
popupAboutToBeShown = QtCore.pyqtSignal()
def showPopup(self):
self.popupAboutToBeShown.emit()
super(ComboBox, self).showPopup()
class Window(QtWidgets.QWidget):
def __init__(self):
super(Window, self).__init__()
self.combo = ComboBox(self)
self.combo.popupAboutToBeShown.connect(self.populateConbo)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.combo)
def populateConbo(self):
if not self.combo.count():
self.combo.addItems('One Two Three Four'.split())
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
但是,对于您的特定用例,我认为更好的解决方案可能是在组合框上设置QSqlQueryModel,以便自动从数据库更新项目.
| 归档时间: |
|
| 查看次数: |
7801 次 |
| 最近记录: |