小编art*_*son的帖子

如何在单击时获取 QMenu 项目的名称?

QMenu我在尝试连接到单个方法时有一些操作;还有一些不相关的其他操作。

import sys
from PyQt5.QtWidgets import *


class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()

        layout = QGridLayout(self)
        self.menu_bar = QMenuBar()
        self.menu = QMenu('MENU', self)

        self.menu_action = QAction('Option #1', self)
        self.menu_action.setData('option1')
        self.menu_action.triggered.connect(self.actionClicked)

        self.menu.addAction(self.menu_action)
        self.menu_bar.addMenu(self.menu)
        layout.addWidget(self.menu_bar)

    def actionClicked(self, action):
        print(action)

        try:
            print(action.text())
        except AttributeError as e:
            print(e)

        try:
            print(action.data())
        except AttributeError as e:
            print(e)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.setGeometry(600, 100, 300, 100)
    window.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

我想知道在调用该方法时如何知道单击了哪些操作。目前,我正在尝试self.menu_action.setData()为该操作提供一个更清晰的接收方法名称,但这似乎无法正常工作。

python pyqt qmenu python-3.x pyqt5

6
推荐指数
1
解决办法
1万
查看次数

如何获取`QMainWindow`的屏幕位置并打印出来?

我正在尝试获取屏幕位置QMainWindowprint位置 (x,y) 值。我已经尝试了这两个self.pos()self.mapToGlobal(self.pos())这两个 return 0

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow


class MainWindow(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)
        self.resize(400, 200)

        # PRINTS 0 0
        print(self.pos().x(), self.pos().y())

        # PRINTS 0 0
        print(self.mapToGlobal(self.pos()).x(), self.mapToGlobal(self.pos()).y())


app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

我正在使用 Python 3.7 和 PyQt 5.11,我该如何实现?

python position pyqt coordinates qmainwindow

6
推荐指数
2
解决办法
6696
查看次数

使用 Beautifulsoup4 从 HTML 中去除 Doctype?

我是 Python 和 BeautifulSoup 的新手,所以请耐心等待......

我正在尝试弄清楚如何使用 Beautifulsoup4 从 HTML 文件中删除 Doctype,但似乎无法确切地弄清楚如何实现这一点。

def saveToText(self):
    filename = os.path.join(self.parent.ReportPath, str(self.parent.CharName.text()) + "_report.txt")
    filename, filters = QFileDialog.getSaveFileName(self, "Save Report", filename, "Text (*.txt);;All Files (*.*)")

    if filename is not None and str(filename) != '':

        try:
            if re.compile('\.txt$').search(str(filename)) is None:
                filename = str(filename)
                filename += '.txt'

            soup = BeautifulSoup(self.reportHtml, "lxml")

            try:  # THROWS AttributeError IF NOT FOUND ..
                soup.find('font').extract()
            except AttributeError:
                pass

            try:  # THROWS AttributeError IF NOT FOUND ..
                soup.find('head').extract()

            except AttributeError:
                pass

            soup.html.unwrap()
            soup.body.unwrap() …
Run Code Online (Sandbox Code Playgroud)

python beautifulsoup python-3.x

5
推荐指数
1
解决办法
1677
查看次数

PHP 有没有像 Python 的 f-string 函数那样的字符串函数?(不是 str.format())

我是 PHP 新手,所以请原谅这个问题。

我想知道 PHP 是否有字符串格式函数,例如 Python 的 f-strings 函数,而不是 str.format()。我看过一些关于这个主题的帖子,但大多数被接受为答案的例子是指 Python 处理格式化字符串的旧方式str.format()。在我的情况下,我想使用格式化的字符串构建一个变量,例如(Python):

f_name = "John"
l_name = "Smith"
sample = f`{f_name}'s last name is {l_name}.`
print(sample)
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用(PHP):

 $num = 5;
 $location = 'tree';
 $format = 'There are %d monkeys in the %s';
 echo sprintf($format, $num, $location);
Run Code Online (Sandbox Code Playgroud)

但是如果我想$format用作变量呢?主要思想是基于其他变量创建一个动态变量,例如:

$db_type = $settings['db_type'];  # mysql
$db_host = $settings['db_host'];  # localhost
$db_name = $settings['db_name'];  # sample

var $format = "%s:host=%s; dbname=%s";

# Not sure what to do after that, …
Run Code Online (Sandbox Code Playgroud)

php string f-string

5
推荐指数
1
解决办法
2695
查看次数

使用“statusBar.addPermanentWidget()”时如何删除小部件之间的分隔线?

是否可以删除使用添加到状态栏的两个小部件之间的分隔线.addPermanentWidget()?我怀疑这是可能的,但我还没有真正找到任何关于如何进行的文献。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QStatusBar, QLabel


class MainWindow(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)

        statusBar = QStatusBar()
        self.setStatusBar(statusBar)
        statusBar.addPermanentWidget(QLabel("Label: "))
        statusBar.addPermanentWidget(QLabel("Data"))


app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python pyqt python-3.x pyqt5 qstatusbar

4
推荐指数
1
解决办法
2345
查看次数

PyQt4 和 PyQt5 中的 QFileDialog 字符串有区别吗?

我有一段使用 Python3 和 PyQt5 打开 QFileDialog 的代码块:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog
import sys


class MCVE(QWidget):

    def __init__(self):
        super().__init__()
        self.initialize()

    def initialize(self):
        self.setWindowTitle('MCVE')
        self.setGeometry(50, 50, 400, 200)
        btn = QPushButton('Example', self)
        btn.clicked.connect(self.clicked)

        self.show()

    def clicked(self):
        filename = QFileDialog.getOpenFileName(
            self, "Open Template", "c:\\",
            "Templates (*.xml);;All Files (*.*)")

        print(filename)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MCVE()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

在使用 PyQt4 的 Python 2 中,按下取消按钮后 print(filename) 语句输出为空字符串。当我使用 PyQt5 在 Python 3 中运行相同的代码时,我得到:

('', '')

注意:引号是单引号

有人能解释一下发生了什么事吗?我在 PyQt4 和 PyQt5 …

python pyqt pyqt4 qfiledialog pyqt5

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

如何从元组填充 QTreeWidget?

我对 Python 还很陌生,所以请耐心等待。我试图从元组填充 QTreeWidget,但我似乎无法让它太工作。

TreeList = ({

    'Header1': ((
        'Item1',
        'Item2',
    )),

    'Header2': ((
        'Item1',
        'Item2'
    ))
})
Run Code Online (Sandbox Code Playgroud)

这个想法是我想创建一个 QTreeWidget 看起来像:

ROOT
  |
  |-- Header1
  |    |-- Item1
  |    |-- Item2
  |
  |-- Header2
       |-- Item1
       |-- Item2
Run Code Online (Sandbox Code Playgroud)

我一直在网上搜索以找到解决方案,但我尝试的任何方法似乎都不起作用,解决此问题的最佳方法是什么。

widget = QTreeWidget()

for i in TreeList:
    val = QTreeWidgetItem([i])
    widget.addTopLevelItem(val)

for i in TreeList['Header1']
    val = QTreeWidgetItem([i])
    widget.Header1.addChild(val)  # DONT THINK THIS IS RIGHT

for i in TreeList['Header2']
    val = QTreeWidgetItem([i])
    widget.Header2.addChild(val)  # DONT THINK THIS IS RIGHT
Run Code Online (Sandbox Code Playgroud)

第一个 for …

python qtreewidget qtreewidgetitem python-3.x pyqt5

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

获取当前选中的 QTreeView 项的文本和索引

我想知道如何在 QTreeView 中返回文本值和所选项目的索引。我尝试使用:

self.TreeView.selectedIndexes()
Run Code Online (Sandbox Code Playgroud)

但这会返回一个 QModelIndex。我不确定如何将其转换为整数值。谷歌搜索,我也没有真正找到任何关于获取文本值的信息。有任何想法吗?

对不起,如果这是一个基本知识问题。我是 python 新手,自学。在 Java 中,大多数对象都可以被强制转换,但我不确定在 Python 中 QObjects 是如何工作的。

我目前正在使用 Python 3.6 和 PyQt5

python pyqt qtreeview python-3.x pyqt5

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

从PHP返回JSON时,SyntaxError:"JSON.parse:意外的非空白..."

我遇到一个问题,从PHP查询返回的JSON无效,我不确定为什么; 我还在学习.当datatype排除时,以下代码返回:

{"Customer_ID":"0", "FirstName":"John", "LastName":"Smith"}
{"Customer_ID":"1", "FirstName":"Jane", "LastName":"Smith"}
Run Code Online (Sandbox Code Playgroud)

否则它返回:

SyntaxError: "JSON.parse: unexpected non-whitespace character after ..."
Run Code Online (Sandbox Code Playgroud)

我认为这可能是因为记录没有在单个JSON响应中返回,但我不能看到这是问题,因为并发响应是JSON.有任何想法吗?有什么建议?随意指出语义问题.

HTML:

getRecord("*", "customer", "");
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

function getRecord(field, table, condition) {
    var request = $.ajax({
        url: "./handler.php",
        method: "GET",
        dataType: "JSON",
        cache: "false",
        data: {
            action: "SELECT",
            field: `${field}`,
            table: `${table}`,
            condition: `${condition}`,
        },
    });

    request.done(function(data, status, xhr) {
        console.log(data, status, xhr);
    });

    request.fail(function(xhr, status, error) {
        console.log(xhr, status, error);
    });

};
Run Code Online (Sandbox Code Playgroud)

PHP:

<?php

    # IMPORT SETTINGS.
    include "settings.php";

    # FUNCTION DISPATCHER. …
Run Code Online (Sandbox Code Playgroud)

html javascript php json mysqli

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

使用 .fill() 将 .push() 值转换为 JavaScript 数组 (n) 次?

是否可以在不使用传统循环执行复制的情况下.push()将值复制到数组但复制推送的值n时间?例如使用.fill(). 我看到的例子声明了new Array()一个长度为n.fill()它有一个值。但是,我还没有看到任何处理 的例子.push(),所以我什至不确定这是否可能。

我正在寻找的示例:

var my_array = [];
for (var i = 0; i < 5; i++) {
    my_array.push(5);
};
Run Code Online (Sandbox Code Playgroud)

设想:

我正在从三个不同的数组或对象中提取值以填充将通过 Munkres(匈牙利)算法运行的单个矩阵,以避免引入另一个循环我想将.push值添加到矩阵并用于.fill()重复值n时间.

例子:

var s = […];
var a = […];
var p = […];

var matrix = [];
for (var i = 0; i < s.length; i++) {
    var preferences = [];
    for (var j = 0; …
Run Code Online (Sandbox Code Playgroud)

javascript arrays

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

单行if-then语法使用链式比较?

我试图从3行简化链式比较:

if -10 < amount < 10:  # amount can range from -999 to 999
    width = 3
else:
    width = 2
Run Code Online (Sandbox Code Playgroud)

到一行表达式:

width = 3 if (-10 < amount < 10) else width = 2
Run Code Online (Sandbox Code Playgroud)

Pycharm抛出一个 SyntaxError

SyntaxError:无法分配给条件表达式

什么是纠正写的方式简化这个陈述?我试过了:

width = 3 if (-10 < amount) else width = 2
Run Code Online (Sandbox Code Playgroud)

但我收到同样的错误.我正在使用Python 3.谢谢.

python comparison python-3.x

0
推荐指数
1
解决办法
219
查看次数

按键或值对JavaScript对象进行排序;ES6

在我问之前 关于这个特定主题有很多讨论,其中大多数与ES5有关,并不一定对ES6成立。我正在尝试澄清一些问题,也许可以帮助下一个正在互联网上寻找答案的人。具体参考ES6

问题:

考虑以下对象结构:

const unsorted_object = {
    'C': '0003',
    'D': '0004',
    'A': '0001',
    'B': '0002',
    'F': '0005',
}; 
Run Code Online (Sandbox Code Playgroud)
  1. 如何按键对JavaScript对象排序?(在这里回答)

    const sorted_object = {};
    Object.keys(unsorted_object).sort().forEach(function(key) {
        sorted_object[key] = unsorted_object[key];
    });
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如何按键值对JavaScript对象排序?

编辑#1

我可能对问题2不太清楚。这个想法是根据键的值而不是键和值对JavaScript对象进行排序。

编辑#2

const unsorted_object = {
    '0001': '13.1666',
    '0002': '11.0001',
    '0003': '10.6664',
    '0004': '13.1666',
    '0005': '7.3331',
};
Run Code Online (Sandbox Code Playgroud)

输出:

'0001': '13.1666'
'0004': '13.1666'
'0002': '11.0001'
'0003': '10.6664'
'0005': '7.3331'
Run Code Online (Sandbox Code Playgroud)

javascript sorting object ecmascript-6

0
推荐指数
1
解决办法
1907
查看次数