主板显卡插槽卡扣断了口六针断了一针还能用吗?

PyTech:Spyder的界面元件
我的图书馆
PyTech:Spyder的界面元件
Spyder的界面元件
Spyder的界面控件库的路径可以通过如下的命令获得:
&&& import spyderlib.widgets as widgets
&&& widgets
widgets目录下的每个文件都是提供了一个Spyder界面控件,本文将介绍下面三个控件:
widgets\sourcecode\codeeditor.py
代码编辑器
widgets\arrayeditor.py
数组编辑器
widgets\internalshell.py
Python命令行
代码编辑器
Spyder的代码编辑器提供了Python、Cython、Fortran、css、html、C/C++等语言的代码高亮显示。如果我们想在自己的项目中使用简单的代码编辑功能,直接使用Spyder的代码编辑器是十分便捷的。
下面是使用代码编辑器的例子:
from PyQt4.QtGui import QApplication, QFont
import sys
from spyderlib.widgets.sourcecode.codeeditor import CodeEditor
app = QApplication(sys.argv)
editor = CodeEditor()
editor.setup_editor(
language = "python",
font = QFont("Courier New")
editor.set_text(file(__file__).read())
editor.show()
sys.exit(app.exec_())
在创建CodeEditor对象之后,?调用setup_editor()设置编辑器的各种属性。下面是setup_editor()的参数列表及其缺省值:
def setup_editor(self, linenumbers=True, language=None, markers=False,
font=None, color_scheme=None, wrap=False, tab_mode=True,
intelligent_backspace=True, highlight_current_line=True,
occurence_highlighting=True, scrollflagarea=True,
edge_line=True, edge_line_column=79,
codecompletion_auto=False, codecompletion_case=True,
codecompletion_single=False, codecompletion_enter=False,
calltips=None, go_to_definition=False,
close_parentheses=True, auto_unindent=True,
indent_chars=" "*4, tab_stop_width=40, cloned_from=None):
在本例中通过设置language和font参数,将语法高亮改为Python,并将字体改为等宽的”Courier New”字体。
?调用set_text()设置编辑器的文本内容。CodeEditor的各种方法可以通过查看CodeEditor及其父类TextEditBaseWidget的代码获得。而由于TextEditBaseWidget从QPlainTextEdit继承,因此还可以查看Qt的手册以了解更多的方法,例如toPlainText()可以获得编辑器中的文本。另外还可以通过Spyder的Preference对话框查看编辑器所支持的各种快捷键。
对象编辑器
使用Qt实现一个编辑二维数据的表格控件是一件十分繁琐的工作。幸好Spyder提供了多种用于编辑对象的编辑器,可以直接用来编辑列表、字典以及数组。下面是编辑数组的演示程序:
from PyQt4.QtGui import QApplication, QFont
import sys
import numpy as np
from spyderlib.widgets.arrayeditor import ArrayEditorWidget
app = QApplication(sys.argv)
data = np.random.randn(6, 4)
editor = ArrayEditorWidget(None, data)
editor.show()
app.exec_()
editor.accept_changes() ?
print data
?ArrayEditorWidget的第一个参数为拥有此控件的父控件,由于这里直接将数组编辑器显示为窗口,因此其父控件为None。第二个参数为所编辑的数组。?在窗口关闭之后,调用编辑器的accept_changes()将编辑器中修改的内容写回数组。
在arrayeditor模块中还提供了ArrayEditor类,它是一个编辑数组的对话框,提供了OK和Cancel两个对话框按钮。下面是使用字典编辑器的例子:
import sys
from PyQt4.QtGui import QApplication
from spyderlib.widgets.dicteditor import DictEditorWidget
app = QApplication(sys.argv)
editor =DictEditorWidget(None, globals()) ?
editor.show()
sys.exit(app.exec_())
?创建DictEditorWidget对象时,将全局变量字典传递给它,因此字典编辑器将显示所有的全局变量。
Python命令行
在界面中添加Python命令行可以方便我们对程序进行调试,观察程序中各个对象的属性,以及运行它们的各种方法。
from PyQt4.QtGui import QApplication, QWidget, QFont, QVBoxLayout, QLineEdit
from spyderlib.widgets.internalshell import InternalShell
class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.shell = InternalShell(self, {"demo":self}, ?
multithreaded = False,
max_line_count = 3000,
font = QFont("Courier new", 10)
self.line_edit = QLineEdit()
vbox = QVBoxLayout()
vbox.addWidget(self.line_edit)
vbox.addWidget(self.shell)
self.setLayout(vbox)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
?创建一个InternalShell对象,它的第二个参数为此对象的名字空间。在本例的命令行控件中可以通过demo变量访问表示窗口的对象。?为了演示命令行的功能,我们添加了一个行文本编辑控件。程序的运行界面如下图所示:
图中通过在命令行中运行:
demo.line_edit.setText("hello world")
将文本编辑框中的文字改为”hello world”。
使用InternalShell之后,系统的标准输入输出都会改为使用界面中的命令行。如果程序出错界面无法显示的话,那么就看不到错误信息了。可以
一个小的综合应用
下面我们结合上述的三种控件,制作一个简单的Python运行工具。在这个程序中,用户通过编辑器编辑Python程序,然后按F5运行在命令行的名字空间中运行程序。名字空间中的数据对象将显示在字典编辑器中。下面是完整的程序:
import sys
from PyQt4.QtGui import (QApplication, QWidget, QFont, QListWidget,
QHBoxLayout, QVBoxLayout, QShortcut, QKeySequence)
import numpy as np
from spyderlib.widgets.sourcecode.codeeditor import CodeEditor
from spyderlib.widgets.internalshell import InternalShell
from spyderlib.widgets.dicteditor import DictEditorWidget
class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.code_editor = CodeEditor(self)
self.code_editor.setup_editor(
language = "python",
font = QFont("Courier New")
run_sc = QShortcut(QKeySequence("F5"), self, self.run) ?
self.shell = InternalShell(self, {"demo":self},
multithreaded = False,
max_line_count = 3000,
font = QFont("Courier new", 10)
self.dict_editor = DictEditorWidget(self, {})
self.dict_editor.editor.set_filter(self.filter_namespace) ?
self.dict_editor.set_data(self.shell.interpreter.namespace) ?
vbox = QVBoxLayout()
vbox.addWidget(self.code_editor)
vbox.addWidget(self.shell)
hbox = QHBoxLayout()
hbox.addWidget(self.dict_editor)
hbox.addLayout(vbox)
self.setLayout(hbox)
self.resize(800, 600)
def filter_namespace(self, data):
result = {}
support_types = [np.ndarray, int, long, float, str, tuple, dict, list]
for key, value in data.iteritems():
if not key.startswith("__") and type(value) in support_types:
result[key] = value
return result
def run(self):
code = str(self.code_editor.toPlainText())
namespace = self.shell.interpreter.namespace
exec code in namespace ?
self.dict_editor.set_data(namespace) ?
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
demo = Demo()
demo.show()
except Exception as ex:
import traceback
sys.__stdout__.write(traceback.format_exc()) ?
sys.exit(app.exec_())
?创建一个F5快捷键,当F5按下时将运行run()。
?在命令行的名字空间中除了数据对象之外,还有许多非数据对象,因此这里通过filter_namespace()对名字空间进行过滤,只显示变量名不以”__”开头、如下的类型对象:
support_types = [np.ndarray, int, long, float, str, tuple, dict, list]
?调用字典编辑器的set_data()设置其所编辑的字典,这里将命令行控件的名字空间通过传递给它。
?在run()中,首先在命令行的名字空间中运行代码编辑器中的程序,?然后调用字典编辑器的set_data()刷新字典编辑器的显示。
?由于系统的标准输入输出都改为了命令行,为了显示错误信息,我们捕捉所有的异常,并通过sys.__stdout__将异常信息输出到控制台窗口中。
程序的运行界面如下:
TA的推荐TA的最新馆藏[转]&【JMedia】十年前的保时捷旗舰比918 Spyder还更黑科技?|界面新闻oJMedia
保时捷在2003年正式推出了旗舰车型Carrera GT,该车不属于当时任何一个已有的车系,地位类似于现在的保时捷918 Spyder。
Carrera GT的性能非常出色,5.7升的V10发动机和6档手动变速箱让它的极速达到330km/h,9.9秒就能从静止加速至200km/h。和918 Spyder一样,Carrera也同样限量生产销售,最终产量从计划的1300台降至1270台。当时在中国市场的完税前价格在650万元左右,笔者有幸在当时就近距离接触到了这款&神车&,只可惜当年驾驶技艺不精,对这款车的感受也仅仅停留于皮毛。
话题开始于一个Carrera GT的一个重要特点,就是它使用了一台纵置的68&夹角V10发动机,却在发动机与后轮之间匹配了一台横置的变速箱。通常来说,汽车的动力总成有两种模式,第一种就是横置平台,发动机与变速箱的轴方向都是横向布置的,这种平台多运用于前置前驱车辆和前置四驱车辆中,少数中置后驱跑车也会使用横置平台,比如第一代本田NSX,第二种就是纵置平台,发动机与变速箱的轴方向跟车身方向一致,这种平台多出现于后驱车型上,当然也有过一些异类,比如纵置发动机却前置前驱的奥迪A4。
上面的内容传递的信息就是,通常情况下,发动机与变速箱的轴方向都是相同的,那么为什么Carrera GT要反其道而行之呢?主要有三个原因。首先,关乎车身重心,现在有许多厂家都在宣传中加入了前后50:50的桥段,其实这并不是全部,重心的位置和车辆重量的分布并不是一回事。
打个比方来说,两把榔头把木手柄底部连接在一起和把金属顶部连接在一起时重心分布都是50:50,但重量分布位置的区别会让它们的手感完全不同,车也是如此,中置后驱的车辆在操控上会比前置后驱车型感受明显更出色。而横置变速箱相比纵置变速箱纵向距离更短,会让重量分布进一步贴近重心,优化车辆的操控性。
其次,是为了照顾到尾部扩散器的安装。早期的赛车都会在尾部的中央看到一个丑陋的金属突出物,这并不能用来繁衍后代凸起就是变速箱的末端,另外排气尾管也会占用扩散器的空间。Carrera GT首先把排气尾管挪到了后保险杠上,这个曾经险些烫伤我大腿的设计给扩散器让出了位置,到918 Spyder时,保时捷觉得排气尾管放在保险杠上都太碍事了,索性移到车辆背部去了&&扯远了,说回变速箱,排气管的位置修改相对容易一些,但纵置变速箱就很难挪窝了,于是就有了这个可以匹配纵置发动机的横置6速手动变速箱了。
大家都知道,车身和轴距越长,车辆在驾驶时的稳定性就会更好,但对于跑车来说,长轴距也会影响车辆的操纵灵活性,让车辆响应趋于笨拙,所以Carrera GT在纵置发动机后搭配横置变速箱很大一部分原因也是为了控制车身长度和轴距。
除了变速箱的布局奇特之外,另一个特点就是保时捷Carrera GT并没有安装飞轮,飞轮是发动机输出轴和离合器之间的主动设备,本身的惯性也可以消除来自发动机的震动,但Carrera GT用一个中空的扭杆弹簧结合传动轴省去了飞轮,并且使用碳纤维陶瓷片作为车辆的离合器,它也是历史上第一台搭载碳陶离合器的量产车。省去飞轮的设计可以减少运动惯量,让发动机转速上升得更快,另外碳纤维陶瓷离合器不但体积小重量轻,耐高温的特点可以让它承受高达1000Nm的扭矩,远高于发动机输出的能力。
最后要说的有趣的一点就是这台变速箱同时还负责储存机油,打开Carrera GT车身中部的发动机罩盖后你就发现它的机油加注口位置非常特别,和发动机并不连接。其实这个位置就是变速箱的顶部。这种设计主要是为了帮助降低发动机安装高度和降低整车重心。为了进一步降低重心,Carrera GT还在前后悬挂结构上都选用了推杆结构,这个类似于方程式赛车的悬挂形式在目前的顶级跑车上都相当罕见。
更多专业报道,请
0界面JMedia联盟成员《名车志》杂志唯一官方微信号。技术流派车界风向标,独到视角车圈公知,和汽车有关的任何事情,我们陪你聊到天荒地老。相关文章您至少需输入5个字评论()Tioga Spyder Stratum自行车坐垫评测|界面新闻oJMedia
Tioga Spyder Stratum review test舍去发泡材质的使用,重量只有120克,消费者需要用全新的角度迎接Spyder Stratum座垫。
这款去除了软垫材质,只有120克的Spyder Stratum座垫将引起话题,但是Tioga向我们解释,这简单的描述并不是这款带著网状结构造型独特座垫的设计目标。
&Spyder设计的目的,是要解决目前所有主流软垫结构座垫的不足:吸收冲击,以及更精确的说,适合吸收震动的速度及频率。&Kai Cheng这样解释到。&我们发现在座垫上放上软垫并不足以吸收震动,因为吸震效果与其质量成正比。要吸收更多的震动就需要更厚更重的软垫。现在大多数进阶型座垫采用的软垫大约15mm厚,然后再考虑你坐上去之后的压缩,在冲击降临时,其实吸震的效果已经所剩不多。&不像发泡材质会被压缩,然后失去功能性,Spyder的双材质网状结构据说可以服贴于使用者臀部,同时不管你有多重,它仍能保持其功能性。
如果你正在回想过去好像有过类似的产品,那是很正常的。Tioga在好几年前曾经推出公路车使用的类似产品,外壳由单一材质构成。但是那项产品证实对于off road骑乘还不够耐用。相反地,Spyder Stratum使用了两种不同材质:较硬材质为基底,上面包覆较为柔软与较可形的材质。Tioga花了几年的时间研发&DualTech&双质结构,他们测试了许多不同版本。剔除了太硬或太软的设计,最终找到了软硬适中,适合各种登山车用途耐用的设计。
&SpyderWeb包覆的压缩表现,是由其下连接骨架独特的支撑结构所调控。这让它承受骑乘者重量的同时,还能保有弹性的空间。但在踩踏或是遭遇强大冲击时,又不会过于下沉或是触底。&Cheng解释为何会需要不那么软的外层包覆设计时,是这样解释的。。
Spyder Stratum的外层包覆经过设计,带有一定程度的柔软性,不多不少刚刚好。
Spyder Stratum通过所有EN检验,要价125美金190克的铬鉬钢座弓版本,并没有任何使用者体量限制。
Tioga提到,对应体重70-80公斤的使用者,网状结构会有最佳的反应。较轻的人或许换感到有一点硬,较重的人会将它压得更下去。这样对使用者的体重建议,也适用于这篇测评里要价190美金的碳纤座弓版本。对于只有120克的座垫,体重上限为110公斤不为过吧!
顏色较深的材质是较硬的基底,较浅的为上方软软较有弹性的网状结构。
原文作者:Lan Chu。图片&mikelevy
更多专业报道,请
0界面JMedia联盟成员为用户提供最新、最潮、最前沿的自行车以及相关户外的赛事、装备、科技、时尚类资讯。相关文章您至少需输入5个字评论()

我要回帖

更多关于 u盘插口断了怎么办 的文章

 

随机推荐