我正在尝试构建一个内部托管GridView的可重用QML组件.GridView中的每个元素都有一组在整个应用程序中很常见的行为(主要是显示和基于鼠标的东西).但是,GridView元素内显示的内容会根据用例而改变.(也就是说,一个GridView使用相同的封装组件,但在应用程序的其他地方,它可能使用不同的Component.)
所以,我想要做的是让每个调用提供一个委托,该委托被添加到GridView中的每个元素,该元素已经是委托.换句话说,这样的事情:
MyGrid.qml
import QtQuick 1.1
Rectangle {
id: myGrid
objectName: "myGrid"
property Component internalDelegate
property variant internalModel
GridView {
anchors.fill: parent
delegate: Row {
Loader {
sourceComponent: myGrid.internalDelegate
}
}
model: parent.internalModel
}
}
Run Code Online (Sandbox Code Playgroud)
我们的想法是GridView委托中的Loader加载用户提供的委托,它看起来像这样:
Main.qml
import QtQuick 1.1
Rectangle {
anchors.fill: parent
width: 300
height: 200
MyGrid {
anchors.fill: parent
internalDelegate: Text {
text: name
}
internalModel: ListModel {
ListElement {
name: "a"
}
ListElement {
name: "b"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.QML报告"name"是Text元素中的未知变量.如果我用字符串替换name变量(即"hello"),它会按预期工作.
我的问题是,如何将"name"变量传递给internalDelegate,或者更好的是,使整个模型可用,以便internalDelegate可以访问所有这些变量(因为调用者也在定义模型).
一个侧面问题是:有更好的方法吗?
有没有办法使用谷歌字体,只加载[A-Z]和&符号字符?
我想这样做是为了减小尺寸并缩短加载时间,因为我只会使用基本的拉丁数字和字母.
如果必须的话,我可以自己托管字体,操作字体包是合法的,但我不确定是否需要自托管以及如何操作google的字体包.
我已经指定了A-Z这样的:
http://fonts.googleapis.com/css?family=Inconsolata&text=ABCDEFGHIJKLMNOPQRSTUVWXYZ
Run Code Online (Sandbox Code Playgroud)
但指定&很麻烦.这两个都不起作用:
<link href='http://fonts.googleapis.com/css?family=Inconsolata&text=ABC&' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Inconsolata&text=ABC&' rel='stylesheet' type='text/css'>
Run Code Online (Sandbox Code Playgroud) 我是QtDesigner的新手.我想知道如何使用QT Designer在GUI中插入图像.我正在尝试添加徽标.帮助将不胜感激.
我应该开始说我对任何类型的并行/多线程/多处理编程都是全新的.
现在,我有机会在32个核心上运行我的TensorFlow CNN(每个核心有2个超线程).我花了很多时间试图理解我应该如何修改(如果必须的话)我的代码以便利用所有的计算能力.不幸的是,我没有做任何事情.我希望TF可以自动完成,但是当我启动我的模型并检查topCPU使用情况时,我发现大部分时间都是100%的CPU使用率和几个200%的峰值.如果使用了所有核心,我希望看到100*64 = 6400%的使用率(正确吗?).我怎么能做到这一点?我应该做一些类似于这里解释的事情吗?如果是这种情况,我是否正确理解所有多线程仅适用于涉及队列的计算?这是否真的可以使用所有可用的计算能力(因为在我看来,队列仅用于阅读和批量训练样本时)?
如果需要,这就是我的代码:(main.py)
# pylint: disable=missing-docstring
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import time
from six.moves import xrange # pylint: disable=redefined-builtin
import tensorflow as tf
from pylab import *
import argparse
import cnn
import freader_2
training_feats_file = ["file_name"]
training_lbls_file = ["file_name"]
test_feats_file = 'file_name'
test_lbls_file = 'file_name'
learning_rate = 0.1
testset_size = 1000
batch_size = 1000
testset_size = 793
tot_samples = 810901
max_steps = 3300 …Run Code Online (Sandbox Code Playgroud) python multithreading neural-network conv-neural-network tensorflow
我想添加QChart到表单中.但我在Widget Box中找不到它.所以我在代码中创建了它.我怎样才能将其插入QWidget或者QFrame还是其他什么东西?
我想在QtDesigner中设置该小部件的区域.
如何在调试模式下使用 Visual Studio Code (VSCode) 进行绘图。在调试控制台中使用以下代码只会给我对象地址,但不会提供输出。对于例如 plt.plot(a) 也是如此。
import numpy as np
import matplotlib.pyplot as plt
a = np.random.randn(64,64)*20+100
plt.imshow(a)
>> <matplotlib.image.AxesImage object at 0x000002CFEEC37F28>
Run Code Online (Sandbox Code Playgroud)
如果我在 VSCode-python Interactive-shell 中尝试相同的代码(使用 jupyter 服务)
我得到了预期的结果

后来我的目标是能够在调试模式下调用任何可视化库(例如封装的 java 库),因为它允许我实时检查处理的数据的运行情况。
我正在使用python和Qt编写GUI应用程序.当我在Mac上启动我的应用程序时,屏幕顶部Mac菜单栏中的第一个菜单项是"Python".我更喜欢那里的应用程序名称是我的应用程序的名称.我怎样才能获得我的程序名称?
以下演示程序创建了一个包含两个菜单的窗口:"Python"和"Foo".我不喜欢这样,因为无论我是用python还是COBOL编写应用程序,我的用户都没有区别.相反,我想要菜单"MyApp"和"Foo".
#!/usr/bin/python
# This example demonstrates unwanted "Python"
# application menu name on Mac.
# Makes no difference whether we use PySide or PyQt4
from PySide.QtGui import *
# from PyQt4.QtGui import *
import sys
app = QApplication(sys.argv)
# Mac menubar application menu is always "Python".
# I want "DesiredAppTitle" instead.
# setApplicationName() does not affect Mac menu bar.
app.setApplicationName("DesiredAppTitle")
win = QMainWindow()
# need None parent for menubar on Mac to get custom menus at all
mbar = …Run Code Online (Sandbox Code Playgroud) 我想在Google云端硬盘中创建一个空的Google表格(仅使用元数据创建).当我提到Google SpreadSheet API文档时,它说要使用DocumentsList API,但它已被弃用,而是要求我使用Google Drive API.在Drive API文档中,我找不到任何方法来创建空Sheet.任何人都知道如何做到这一点?
python google-drive-api google-api-python-client google-sheets-api
我正在尝试在Qt5中更改QAbstractButton(QPushButton或QCheckBox)的背景颜色并且没有运气.
这没有任何作用:
pButton->setAutoFillBackground(true);
QPalette palette = pButton->palette();
palette.setColor(QPalette::Window, QColor(Qt::blue));
pButton->setPalette(palette);
pButton->show();
Run Code Online (Sandbox Code Playgroud)
如果我尝试更改样式表:
pButton->setStyleSheet("background-color: rgb(255,255,0);");
Run Code Online (Sandbox Code Playgroud)
然后Qt举起双手,画出一个看起来很粗糙的块状按钮.
有一个标题为" 如何更改QWidget的背景颜色 "的页面,但它只讨论了这两种方法.
还有一个页面" Qt Style Sheets Examples "暗示如果你想改变背景颜色,你必须接管绘制按钮的所有方面,这看起来有点矫枉过正.
我需要这个在Mac,Windows和Ubuntu Linux上运行,如果我必须手动绘制关于按钮的所有内容3次(每个平台一次),这真的不是一件幸福的事情.
我错过了一些明显的东西吗
ps"背景颜色"是指按钮周围的区域,而不是按钮面上文本下的颜色.
import sys
from PyQt5.QtWidgets import (QApplication, QWidget)
app = QApplication(sys.argv)
window = QWidget()
window.setGeometry(50, 50, 500, 300)
window.setWindowTitle('Hello, world')
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
我刚开始学习pyqt5.我写了这个hello world app,它有效.但是pylint在模块"PyQt5.QtWidgets"中给出了"E0611:No name'QWidget'",对于QApplication也是如此.这是pylint中的某种错误吗?
pylint --version
No config file found, using default configuration
pylint 1.7.2,
astroid 1.5.3
Python 3.5.2 (default, Aug 18 2017, 17:48:00)
[GCC 5.4.0 20160609]
Run Code Online (Sandbox Code Playgroud) python ×5
qt ×4
qt-designer ×2
qt5 ×2
gridview ×1
listview ×1
macos ×1
model ×1
pylint ×1
pyqt ×1
pyqt5 ×1
pyside ×1
qchart ×1
qchartview ×1
qcheckbox ×1
qmenubar ×1
qml ×1
qpushbutton ×1
tensorflow ×1
webfonts ×1