Python PyQt 更改组合框的布局
Python PyQt Change layout of combobox
有没有办法(或者我可以使用不同的小部件(我找不到)让我的组合框看起来像图片中的组合框?
图片是我要放的字体。我希望选项成为我的字体列表。
我想查看所有选项(如果有太多选项可以滚动)和 select 一个选项。
到目前为止,这是我的代码:
from PyQt5 import QtCore, QtWidgets
import sys
from PyQt5 import QtGui, QtWidgets, QtPrintSupport
class Thired(QtWidgets.QDialog):
def __init__(self, parent=None):
super(Thired, self).__init__(parent)
self.bb = QtWidgets.QComboBox(self)
self.bb.setGeometry(QtCore.QRect(212, 50, 400, 25))
self.bb.setEditable(True)
bpas = ['a','b','c']
self.bb.addItem("")
self.bb.setItemText(0, "")
for bpa in bpas:
self.bb.addItem(bpa)
self.bb.move(50, 200)
self.bb.activated[str].connect(self.style_choice)
def font_choice(self):
font, valid = QtWidgets.QFontDialog.getFont()
if valid:
self.styleChoice.setFont(font)
def style_choice(self, text):
self.styleChoice.setText(text)
QtWidgets.QApplication.setStyle(QtWidgets.QStyleFactory.create(text))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
gui = Thired()
gui.show()
app.exec_()
编辑:
我希望窗口打开时始终显示我的所有选项。这样我就不必按下拉箭头。换句话说:如果 window 正在打开,则有一个 bpas
的列表,我希望能够从 bpa/option 的列表之一中 select 并发送一个表明我选择了这种双酚 A。
再多解释一下(代码中没有显示):bpas = ['a','b','c']
是项目,我希望用户选择其中一个,然后 selecting该程序将加载其连接的数据库。使用下拉菜单可以,但我不喜欢 dorpdown 看起来有很多选项的方式:)
您可以将 QListWidget 与 QLineEdit 一起使用:
from PyQt5 import QtCore, QtWidgets
import string
class Thired(QtWidgets.QDialog):
def __init__(self, parent=None):
super(Thired, self).__init__(parent)
self.line_edit = QtWidgets.QLineEdit()
self.list_widget = QtWidgets.QListWidget()
options = list(string.ascii_letters)
self.list_widget.addItems(options)
self.list_widget.itemClicked.connect(self.on_itemClicked)
lay = QtWidgets.QVBoxLayout(self)
lay.addWidget(self.line_edit)
lay.addWidget(self.list_widget)
self.resize(640, 480)
@QtCore.pyqtSlot(QtWidgets.QListWidgetItem)
def on_itemClicked(self, item):
self.line_edit.setText(item.text())
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
gui = Thired()
gui.show()
sys.exit(app.exec_())
有没有办法(或者我可以使用不同的小部件(我找不到)让我的组合框看起来像图片中的组合框?
图片是我要放的字体。我希望选项成为我的字体列表。
我想查看所有选项(如果有太多选项可以滚动)和 select 一个选项。
到目前为止,这是我的代码:
from PyQt5 import QtCore, QtWidgets
import sys
from PyQt5 import QtGui, QtWidgets, QtPrintSupport
class Thired(QtWidgets.QDialog):
def __init__(self, parent=None):
super(Thired, self).__init__(parent)
self.bb = QtWidgets.QComboBox(self)
self.bb.setGeometry(QtCore.QRect(212, 50, 400, 25))
self.bb.setEditable(True)
bpas = ['a','b','c']
self.bb.addItem("")
self.bb.setItemText(0, "")
for bpa in bpas:
self.bb.addItem(bpa)
self.bb.move(50, 200)
self.bb.activated[str].connect(self.style_choice)
def font_choice(self):
font, valid = QtWidgets.QFontDialog.getFont()
if valid:
self.styleChoice.setFont(font)
def style_choice(self, text):
self.styleChoice.setText(text)
QtWidgets.QApplication.setStyle(QtWidgets.QStyleFactory.create(text))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
gui = Thired()
gui.show()
app.exec_()
编辑:
我希望窗口打开时始终显示我的所有选项。这样我就不必按下拉箭头。换句话说:如果 window 正在打开,则有一个 bpas
的列表,我希望能够从 bpa/option 的列表之一中 select 并发送一个表明我选择了这种双酚 A。
再多解释一下(代码中没有显示):bpas = ['a','b','c']
是项目,我希望用户选择其中一个,然后 selecting该程序将加载其连接的数据库。使用下拉菜单可以,但我不喜欢 dorpdown 看起来有很多选项的方式:)
您可以将 QListWidget 与 QLineEdit 一起使用:
from PyQt5 import QtCore, QtWidgets
import string
class Thired(QtWidgets.QDialog):
def __init__(self, parent=None):
super(Thired, self).__init__(parent)
self.line_edit = QtWidgets.QLineEdit()
self.list_widget = QtWidgets.QListWidget()
options = list(string.ascii_letters)
self.list_widget.addItems(options)
self.list_widget.itemClicked.connect(self.on_itemClicked)
lay = QtWidgets.QVBoxLayout(self)
lay.addWidget(self.line_edit)
lay.addWidget(self.list_widget)
self.resize(640, 480)
@QtCore.pyqtSlot(QtWidgets.QListWidgetItem)
def on_itemClicked(self, item):
self.line_edit.setText(item.text())
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
gui = Thired()
gui.show()
sys.exit(app.exec_())