Python 将QColorDialog添加到QHBoxLayout

Python 将QColorDialog添加到QHBoxLayout,python,pyqt,pyqt5,qcolordialog,Python,Pyqt,Pyqt5,Qcolordialog,我正在尝试制作一个图片编辑器,你可以在右边选择你的颜色,在屏幕的左边编辑图片。 所以我需要一个QHBoxLayout来并排设置我的两个窗口。我无法将ColorDialog添加到QHBoxLayout。为了测试,我用了一个按钮而不是图片 我很想添加带有.addWidget的ColorDialog,但它不起作用。 颜色对话框仍会显示,但侧面没有按钮 def initUI(self): self.setWindowTitle(self.title) self.setGeometry(s

我正在尝试制作一个图片编辑器,你可以在右边选择你的颜色,在屏幕的左边编辑图片。 所以我需要一个QHBoxLayout来并排设置我的两个窗口。我无法将ColorDialog添加到QHBoxLayout。为了测试,我用了一个按钮而不是图片

我很想添加带有.addWidget的ColorDialog,但它不起作用。 颜色对话框仍会显示,但侧面没有按钮

def initUI(self):
    self.setWindowTitle(self.title)
    self.setGeometry(self.left, self.top, self.width, self.height)
    color = QColorDialog.getColor()

    horizontalbox = QHBoxLayout
    cancelbutton = QPushButton("CancelButton")
    horizontalbox.addWidget(cancelbutton)
    horizontalbox.addWidget(color)

    self.setLayout(horizontalbox)
    self.show()
getColor()是一个静态方法,只返回一个选定的QColor,不允许获取小部件,因此不应使用该方法,但必须创建一个类QColorDialog的对象,如下所示

def initUI(self):
    self.setWindowTitle(self.title)
    self.setGeometry(self.left, self.top, self.width, self.height)

    colordialog = QColorDialog()
    colordialog.setOptions(QColorDialog.DontUseNativeDialog)
    colordialog.currentColorChanged.connect(self.on_color_changed)

    cancelbutton = QPushButton("CancelButton")

    horizontalbox = QHBoxLayout(self)
    horizontalbox.addWidget(cancelbutton)
    horizontalbox.addWidget(colordialog)
    self.show()

def on_color_changed(self, color):
    print(color)
更新: QColorDialog是一个对话框窗口,它的预定义行为是关闭窗口,因此一个可能的解决方案是断开按钮的单击信号,并且要在按下按钮后获得颜色,必须使用连接到另一个插槽的单击信号。我还看到QColorDialog的取消按钮是不必要的,因为我已经隐藏了它

def initUI(self):
self.colordialog=QColorDialog()
self.colordialog.setOptions(QColorDialog.DontUseNativeDialog)
button\u box=self.colordialog.findChild(qtwidts.QDialogButtonBox)
确定按钮=按钮盒。按钮(QDialogButtonBox.ok)
确定按钮。断开连接()
确定按钮。单击。连接(在确定按钮上单击)
#隐藏取消按钮
取消按钮=按钮盒。按钮(QDialogButtonBox.cancel)
取消按钮。隐藏()
cancelbutton=QPushButton(“cancelbutton”)
水平框=QHBoxLayout(自)
horizontalbox.addWidget(取消按钮)
horizontalbox.addWidget(self.colordialog)
self.show()
单击“确定”按钮上的def(自身):
color=self.colordialog.currentColor()
打印(color.name())
QColorDialog.getColor()是一个静态方法,只返回选定的QColor,不允许获取小部件,因此不应使用该方法,但必须创建QColorDialog类的对象,如下所示

def initUI(self):
    self.setWindowTitle(self.title)
    self.setGeometry(self.left, self.top, self.width, self.height)

    colordialog = QColorDialog()
    colordialog.setOptions(QColorDialog.DontUseNativeDialog)
    colordialog.currentColorChanged.connect(self.on_color_changed)

    cancelbutton = QPushButton("CancelButton")

    horizontalbox = QHBoxLayout(self)
    horizontalbox.addWidget(cancelbutton)
    horizontalbox.addWidget(colordialog)
    self.show()

def on_color_changed(self, color):
    print(color)
更新: QColorDialog是一个对话框窗口,它的预定义行为是关闭窗口,因此一个可能的解决方案是断开按钮的单击信号,并且要在按下按钮后获得颜色,必须使用连接到另一个插槽的单击信号。我还看到QColorDialog的取消按钮是不必要的,因为我已经隐藏了它

def initUI(self):
self.colordialog=QColorDialog()
self.colordialog.setOptions(QColorDialog.DontUseNativeDialog)
button\u box=self.colordialog.findChild(qtwidts.QDialogButtonBox)
确定按钮=按钮盒。按钮(QDialogButtonBox.ok)
确定按钮。断开连接()
确定按钮。单击。连接(在确定按钮上单击)
#隐藏取消按钮
取消按钮=按钮盒。按钮(QDialogButtonBox.cancel)
取消按钮。隐藏()
cancelbutton=QPushButton(“cancelbutton”)
水平框=QHBoxLayout(自)
horizontalbox.addWidget(取消按钮)
horizontalbox.addWidget(self.colordialog)
self.show()
单击“确定”按钮上的def(自身):
color=self.colordialog.currentColor()
打印(color.name())

这是可行的,但现在我遇到了另一个问题,当我点击OK按钮时,我用QColorDialog选择所选的颜色,颜色对话框消失,屏幕上只有cancel按钮。有没有办法避免点击OK按钮后颜色对话框关闭?这是可行的,但现在我有另一个问题,当我点击OK按钮时,我用QColorDialog选择所选颜色,颜色对话框消失,屏幕上只有cancel按钮。是否有办法避免单击“确定”按钮后颜色对话框关闭?