我正在做一个关于盒子布局的PyQt4教程.但我不明白它是如何addStretch运作的.
vbox.addStretch(1)和hbox.addStretch(1),则两个按钮显示在右下方.为什么? vbox.addStretch(1)和hbox.addStretch(1)退出,两个按钮出现在我的窗口中央,它们可以水平变形,但不能垂直变形.为什么? 以下是我正在使用的代码:
import sys
from PyQt4 import QtGui
class BoxLayout(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setWindowTitle('box layout')
ok = QtGui.QPushButton("OK")
cancel = QtGui.QPushButton("Cancel")
vbox = QtGui.QHBoxLayout()
vbox.addStretch(1)
vbox.addWidget(ok)
vbox.addWidget(cancel)
hbox = QtGui.QVBoxLayout()
hbox.addStretch(1)
hbox.addLayout(vbox)
self.setLayout(hbox)
self.resize(100, 100)
app = QtGui.QApplication(sys.argv)
qb = BoxLayout()
qb.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud) 从一个循环我得到一个数组.我想将这个数组保存在一个tempfile.问题是np.savez只保存循环中的最后一个数组.我想我明白为什么会这样,但不知道怎么做得更好.
为了解决我的问题,我有了打开tempfile的想法,mode=a+b目的是从循环中追加新的数组.但这不起作用.
我的代码到目前为止:
tmp = TemporaryFile(mode="a+b")
for i in range(10):
array = getarray[i] #demo purpose
np.savez(tmp,array)
tmp.seek(0)
Run Code Online (Sandbox Code Playgroud)
然后使用tempfile读取数组:
tmp_read = np.load(tmp)
print tmp_read.files
[OUTPUT]: ['arr_0']
Run Code Online (Sandbox Code Playgroud)
但我想在tempfile中有10个数组.有任何想法吗?
谢谢
我正在使用matplotlib,我想在我的"轴 - 传奇"旁边放一个箭头.但我不知道怎么做.在示例中,我想要的箭头以红色绘制.
谢谢
我正在处理“ itemchanged”信号。
我如何找出更改项目的行和列?我只发现了相同的问题,但对于C ++。即时通讯使用python。
我有2个或更多图例的剧情。如何“获得”所有图例以更改(例如)图例中的颜色和线条样式?
handles, labels = ax.get_legend_handles_labels()只给了我“第一个”图例,我将其添加到绘图中plt.legend()。但是我也想要其他传说,我将其添加到plt.gca().add_artist(leg2)
我该怎么做?
我试图在编辑 qtable 单元格后更改它的背景颜色。我已经看过问题“编辑 QTableView 单元格后如何更改背景颜色? ”,我遇到的问题是,在答案的示例中,我不明白“角色”来自哪里。我的意思是,角色在哪里声明以及角色在哪里改变其值?我只看到角色与“Qt.Core.xxx”相比的位置
import sys
from PyQt4 import QtGui, QtCore
class Model(QtCore.QAbstractTableModel):
def __init__(self, parent=None):
super(Model, self).__init__(parent)
# list of lists containing [data for cell, changed]
self._data = [[['%d - %d' % (i, j), False] for j in range(10)] for i in range(10)]
def rowCount(self, parent):
return len(self._data)
def columnCount(self, parent):
return len(self._data[0])
def flags(self, index):
return QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled |QtCore.Qt.ItemIsEditable
def data(self, index, role):
if index.isValid():
data, changed = self._data[index.row()][index.column()]
if role in [QtCore.Qt.DisplayRole, QtCore.Qt.EditRole]: …Run Code Online (Sandbox Code Playgroud) 我需要来自a的值QtableView,但如果没有从表中发出的信号,我不知道该怎么做.
该表从txt文件中获取其值.从表中,我想使用值,但没有在表中工作.该表只是一个缓冲区.那么如何从表中"获取"所有值,只需按a QPushButton,而不会从表本身发出任何信号?
我有几个 Spinbox,如果值发生更改,我希望它们更改背景颜色。
使用此连接命令:
self.doubleSpinBox_1.valueChanged.connect(self.color)
Run Code Online (Sandbox Code Playgroud)
我的第一次尝试是:
def color(self):
send = self.sender()
emitter = send.text()
Run Code Online (Sandbox Code Playgroud)
问题是,“send.text()”返回更改后的值,而不是旋转盒发出信号。在有关 QDoubleSpinBox 的文档中,我搜索了诸如“setName”之类的内容,或用于识别我的发件人旋转框的内容,但我没有找到任何内容。
我有一个 Qwidget,它通常显示在 Qmainwindow 中。有时不需要使用整个主窗口,因为您只想使用某个 Qwidget 的功能。如果是这种情况,我希望我的小部件中有一个菜单栏。
我试过:
if parent == "self":
self.layout().addMenubar(self)
Run Code Online (Sandbox Code Playgroud)
但是使用上面的代码它只是停止编译而不会引发任何错误。我做错了什么?谢谢!
由于特定原因,我有两个功能,每个功能在两个不同的窗口中创建一个图.是否可以在一个窗口中统一这两个图,而不统一功能?谢谢!
编辑:我有2个涉及的函数和一个数据库:file1.py中的函数1绘制了一个2d线图:
plt.figure("TEST12")
ax=plt.subplot(111)
ax.plot(array[:,10])
Run Code Online (Sandbox Code Playgroud)
在file2.py中我的另一个函数,它绘制了一个填充的轮廓:
plt.figure("TEST13")
ax = plt.subplot(111)
ax.contourf(x,y,data)
plt.gca().set_aspect('equal')
Run Code Online (Sandbox Code Playgroud)
如果我plt.show像往常一样使用,结果是2个不同的窗口.
可以初始化循环内的列表,并在同一循环中将对象追加到列表中,而不会在启动它时始终清除列表?
for j in range(5):
mylist=[]
mylist.append(j)
Run Code Online (Sandbox Code Playgroud)
结果将是一个包含一个元素的列表,但当然我想要一个包含5个元素的列表.有一个很好的方法吗?
我问,因为我需要初始化函数中的列表并多次使用此函数,每次使用该函数时都不清除列表,而是附加新对象.你明白我的意思吗?目前我正在使用这样的东西:
if first == True:
mylist = []
first = False
mylist.append("bla")
Run Code Online (Sandbox Code Playgroud)
但它看起来不太好看.
在此先感谢,抱歉我的英语:)
python ×8
pyqt ×5
matplotlib ×3
python-2.7 ×2
qtableview ×2
arrays ×1
layout ×1
list ×1
loops ×1
numpy ×1
plot ×1
qboxlayout ×1
qtablewidget ×1
qwidget ×1
sender ×1
subplot ×1