小编ekh*_*oro的帖子

如何创建复选框列表

我试图读入一个 xml 文件并QListWidget用它的一些内容填充 a 。每个条目都应该有一个复选框。

在 Qt Designer 中,我创建了列表并添加了一个带有复选框的项目,方法是将项目添加到 listWidget,然后右键单击它并选择“编辑项目”>“属性”>“将标志设置为 UserCheckable”。所以我可以手动完成。

但是当我读入 xml 文件以填充 ListWidget 时,我无法使这些项目可检查。

import xml.etree.ElementTree as et

xml_file = os.path.join(path, testcase_file)
tree = et.parse(xml_file)
root = tree.getroot()

for testcases in root.iter('testcase'):
    testcase_name = str(testcases.attrib)
    item = self.listWidgetTestCases
    item.addItem(QtGui.QApplication.translate("qadashboard", testcase_name, None))
    # item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
    # item.setCheckState(QtCore.Qt.Unchecked)
Run Code Online (Sandbox Code Playgroud)

这将在列表小部件中创建一个测试用例名称列表。但是我无法将这些项目放入复选框中。item.setFlagsorItemIsUserCheckable无法识别列表小部件,因此在上面的示例中注释掉了这两行。

python checkbox qt pyqt qlistwidget

2
推荐指数
1
解决办法
4864
查看次数

无法在 QFileDialog 中为文件添加扩展名

我在使用 QFileDialog 在 PyQt4 中保存带有扩展名的文件(获取文件路径和附加扩展名)时遇到问题。我的 Python 代码如下所示:

dialog = QtGui.QFileDialog()
dialog.setDefaultSuffix(".json")
file = dialog.getSaveFileName(None, "Title", "", "JSON (.json)")
Run Code Online (Sandbox Code Playgroud)

它有效,路径正确,对话框标题和过滤器在对话框窗口中,但第二行被忽略。文件没有任何扩展名。

如何默认添加扩展名?我究竟做错了什么?

python pyqt pyqt4 qfiledialog

2
推荐指数
1
解决办法
4948
查看次数

在 QTextEdit 底部对齐文本

我有一个QWidget电话sideQTextEdit里面有它的sideLayout布局。

chatView = QTextEdit()
chatView.setHtml('<p style="margin: 0px; line-height: 28px;">')
sideLayout.addWidget(tab.chatView, 0, 0, 1, 1)
Run Code Online (Sandbox Code Playgroud)

在下面QTextEdit有一个QLineEdit调用inputLine,我在那里写文本并将它发送到QTextEdit通过.append(inputLine.text())on Return

我希望每个新行(<p>元素)出现在底部,并且每个新行都附加在第一个下面。

这是它现在的样子:

文字未与底部对齐

我试过setStylesheet()p { vertical-align: bottom; }
我想p { position: absolute; bottom: 0px; }
我试过setAlignment()Qt.AlignBottom

如何使线条像这样与底部对齐?

所需对齐

python qt pyqt text-alignment qtextedit

2
推荐指数
1
解决办法
2781
查看次数

为什么 input() 会导致“QCoreApplication::exec: 事件循环已在运行”?

我遇到了这个 QCoreApplication 问题,其中在 QObject 在 QThread 内完成执行后调用 input() 会导致无限循环打印到控制台“QCoreApplication::exec: 事件循环已在运行”。

在代码中,我创建了一个通用worker作为QObject,将其移动到QThread中(使用QThread的认可方式,而不是子类化它),然后在通用worker内执行另一个QObject(主类)函数。只要我在执行 Master 后不调用 input() ,一切就可以正常工作。请注意,如果我直接在工作线程中执行函数(而不是主实例的函数),也会出现问题。

这是重现该问题的示例代码:

import sys
from PyQt4.QtCore import QCoreApplication, QObject, QThread, pyqtSignal, pyqtSlot


class Worker(QObject):
    """
    Generic worker.
    """
    start = pyqtSignal(str)
    finished = pyqtSignal()

    def __init__(self, function):
        QObject.__init__(self)
        self._function = function
        self.start.connect(self.run)

    def run(self):
        self._function()
        self.finished.emit()


class Master(QObject):
    """
    An object that will use the worker class.
    """
    finished = pyqtSignal()

    def __init__(self):
        QObject.__init__(self)

    @pyqtSlot()
    def do(self):
        print("Do what?")
        self.finished.emit()


def done():
    # FIXME This will …
Run Code Online (Sandbox Code Playgroud)

python multithreading input pyqt4 qcoreapplication

2
推荐指数
1
解决办法
5342
查看次数

在 tkinter 标签 Python 中显示平方根符号

如何在 Tkinter 中显示平方根符号,并且数字实际上看起来像在根中?

python unicode symbols tkinter

2
推荐指数
1
解决办法
3173
查看次数

通过导入PyQt5 Ui向按钮添加功能

我有一个名为guiNext.py和next.py的PyQt5 Ui,正在刷新用户界面。如何向UI按钮添加功能?这就是我所拥有的,当我运行next.py并单击HELLO按钮时,什么也没有发生。

guiNext.py:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'guiNext_001.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_nextGui(object):
    def setupUi(self, nextGui):
        nextGui.setObjectName("nextGui")
        nextGui.resize(201, 111)
        nextGui.setMinimumSize(QtCore.QSize(201, 111))
        nextGui.setMaximumSize(QtCore.QSize(201, 111))
        self.centralwidget = QtWidgets.QWidget(nextGui)
        self.centralwidget.setObjectName("centralwidget")
        self.helloBtn = QtWidgets.QPushButton(self.centralwidget)
        self.helloBtn.setGeometry(QtCore.QRect(10, 10, 181, 91))
        self.helloBtn.setObjectName("helloBtn")
        nextGui.setCentralWidget(self.centralwidget)

        self.retranslateUi(nextGui)
        QtCore.QMetaObject.connectSlotsByName(nextGui)

    def retranslateUi(self, nextGui):
        _translate = QtCore.QCoreApplication.translate
        nextGui.setWindowTitle(_translate("nextGui", "MainWindow"))
        self.helloBtn.setText(_translate("nextGui", …
Run Code Online (Sandbox Code Playgroud)

python pyqt qt-designer pyqt5 pyuic

2
推荐指数
1
解决办法
1559
查看次数

PyQt:如何展开 QTreeWidget 中的所有子级

没有真正的问题,我只是有一个外观问题。好吧,首先我使用 Qt Designer 创建一个表单。在此表格上我放置了一个QTreeWidget. 我们仍然在 Qt Designer 中。在 中QTreeWidget,我创建了一些条目(父母),然后我还添加了一些子条目。完成后,我保存 ui 文件,然后加载该文件 -loadUi()动态使用。在本例中我使用 PyQt4。到目前为止没有问题。

当我加载放置的表单时,QTreeWidget 我希望程序展开所有子条目。默认情况下,当我运行该程序时,我只看到父条目。当我想查看子条目时,我必须单击父条目,但我不希望这样做。

有办法解决这个问题吗?

python qt4 qtreewidget pyqt4

2
推荐指数
1
解决办法
4804
查看次数

PyQt5:为 QStandardItem 设置数据

如果我构造一个QStandardItem这样的:

item = QtGui.QStandardItem('Item Name')
Run Code Online (Sandbox Code Playgroud)

当这个项目被添加到一个QStandardItemModel模型并在一个模型中查看时,QTreeView我得到一个单元格,上面写着Item Name. 但是,当我构建一个像:

item = QtGui.QStandardItem()
item.setData(123)
Run Code Online (Sandbox Code Playgroud)

我得到一个空单元格,但我仍然可以通过调用来调用数据:

print(item.data())
Run Code Online (Sandbox Code Playgroud)

我会得到号码123。如何让数字实际显示在单元格中?

python qt pyqt qtreeview qstandarditem

2
推荐指数
1
解决办法
4514
查看次数

如何更改 QDialog 中的默认按钮行为

我读到QDialog它的所有对象都设置为默认值。例如,如果我添加一个QPushButton

pushButton.setDefault(True)   
pushButton.setAutoDefaul(True)
Run Code Online (Sandbox Code Playgroud)

我知道我可以将每个对象设置为False,但是有没有办法避免QDialog将其所有对象设置为默认值?

python pyqt qdialog pyqt4 python-2.7

2
推荐指数
1
解决办法
2601
查看次数

PyQt:如何创建自定义组合标题栏和菜单栏

我想在一个栏中设置菜单和标题,但不知道如何布局菜单栏和标题栏(或我自己的标题栏)。

# -*- coding:utf-8 -*- 

from PyQt5 import QtWidgets,QtGui,QtCore
import sys

qss = ""

class UI(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setui()  
    def setui(self):
        #----------main-window----------------------
        self.setGeometry(0,0,1366,768) #x,y,w,h
        self.setWindowTitle('hello world')
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        #----------menu-bar---------------------
        #--------file-menu-----
        self.menu_file=self.menuBar().addMenu('file')
        self.menu_file_open=self.menu_file.addAction('open')
        self.menu_file_save=self.menu_file.addAction('save')
        self.menu_file_saveas=self.menu_file.addAction('save as...')
        self.menu_file_quit=self.menu_file.addAction('exit')
        #-----------experient-menu----------
        self.menu_work=self.menuBar().addMenu('work')
        #-------------analysis-menu---------
        self.menu_analysis=self.menuBar().addMenu('analysis')
        #------------edit-menu--------------
        self.menu_edit=self.menuBar().addMenu('edit')
        #------------window-menu--------------
        self.menu_window=self.menuBar().addMenu('window')
        #------------help---menu--------------
        self.menu_help=self.menuBar().addMenu('help')
        #-------------set---qss----------------------
        self.setStyleSheet(qss)
        #-------functions--connect-------------------
        self.menu_file_quit.triggered.connect(QtWidgets.qApp.quit)
        self.show()
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    ex = UI()
    sys.exit(app.exec_()) 
Run Code Online (Sandbox Code Playgroud)

我希望一个栏包含图标、菜单、标题和三个按钮,就像vscode的菜单栏一样。

vscode的菜单栏

python pyqt titlebar menubar

2
推荐指数
1
解决办法
2820
查看次数