有没有办法以编程方式通过索引获取浏览器中打开的选项卡列表?
例如,假设Google Chrome已打开,有两个标签.
在程序中,一行如下:
tabs_list = list_tabs(hwnd)
Run Code Online (Sandbox Code Playgroud)
...其中hwnd是整个Chrome实例窗口的句柄,tabs_list是一个字典,如:
[
0 : 'http://stackoverflow.com/',
1 : 'http://www.coolstuffff.com/'
]
Run Code Online (Sandbox Code Playgroud)
(...或者可能是窗口的标题而不是网址)
如果是这样,那么可以从带有键盘命令的Python脚本,控制 - (CTRL-),如control-1或control-2,将焦点集中到其中一个.
稍后添加的编辑试图帮助澄清:想象一下本地wxPython应用程序,您已经知道如何在本地运行的wxPython应用程序中激活同一个框上的给定Chrome实例,并且该浏览器实例打开了多个选项卡,并且现在,您希望确保某个选项卡具有焦点,以便能够与正在显示的网页进行交互(例如,可以使用CTRL-A CTRL-C来获取其内容).这个问题不是关于发布键盘命令,这是已知的,问题是如何获得打开的选项卡列表,如果可能的话,谢谢.
对于可以直接从闪存/笔/ USB /跳/拇指驱动器运行的应用程序,为了便于从一台机器移动到另一台机器,将用户设置存储在记忆棒上的同一目录中是有意义的.程序正在运行(而不是每台机器的Windows/Mac/Linux用户或系统目录).
QSettings()很方便,可以告诉它使用当前的工作目录吗?
这是一个小例子程序,它使用QSettings()保持其运行的屏幕位置:
from PySide import QtGui, QtCore
from PySide.QtGui import QTabWidget, QApplication
from PySide.QtCore import QSettings
class AbcApp(QTabWidget):
def __init__(self):
super(AbcApp, self).__init__()
self.settings = QSettings(QSettings.IniFormat,QSettings.SystemScope, '__MyBiz', '__settings')
self.settings.setFallbacksEnabled(False) # File only, not registry or or.
# setPath() to try to save to current working directory
self.settings.setPath(QSettings.IniFormat,QSettings.SystemScope, './__settings.ini')
# Initial window size/pos last saved
self.resize(self.settings.value("size", QtCore.QSize(270, 225)))
self.move(self.settings.value("pos", QtCore.QPoint(50, 50)))
self.tab = QtGui.QWidget()
self.textEdit = QtGui.QTextEdit(self.tab)
self.textEdit.setHtml('<font color=grey>[QTextEdit area]</font><p><center><font color=blue size=4><b>Allo Woyld</b></font></center>')
self.addTab(self.tab, 'tab1')
def closeEvent(self, e):
# …Run Code Online (Sandbox Code Playgroud) Terms:
talib: Technical Analysis Library (stock market indicators, charts etc)
CDL: Candle or Candlestick
Run Code Online (Sandbox Code Playgroud)
简短版本:我想根据字符串 'some_function' 运行 my_lib.some_function()
在 quantopian.com 上,为了简洁起见,我想在循环中调用所有以 CDL 开头的 60 个 talib 函数,例如 talib.CDL2CROWS()。首先将函数名称作为字符串提取,然后通过与字符串匹配的名称运行函数。
这些 CDL 函数都采用相同的输入,即一段时间内的开盘价、最高价、最低价和收盘价列表,这里的测试仅使用长度为 1 的列表来简化。
import talib, re
import numpy as np
# Make a list of talib's function names that start with 'CDL'
cdls = re.findall('(CDL\w*)', ' '.join(dir(talib)))
# cdls[:3], the first three like ['CDL2CROWS', 'CDL3BLACKCROWS', 'CDL3INSIDE']
for cdl in cdls:
codeobj = compile(cdl + '(np.array([3]),np.array([4]),np.array([5]),np.array([6]))', 'talib', 'exec')
exec(codeobj)
break
# …Run Code Online (Sandbox Code Playgroud) 我想用Selenium修改textarea中的部分文本.textarea似乎几乎就像是只读的.
在这个使用示例算法的非常简单的示例中,能够更改此行上的库存ID会很棒:
context.aapl = sid(24)
Run Code Online (Sandbox Code Playgroud)
......对于这样的事情:
context.aapl = sid(39840)
Run Code Online (Sandbox Code Playgroud)
...这是特斯拉股票ID.变量名将不再有意义,无所谓,只是一个开始.
这个Selenium代码可以打开样本而无需登录.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
t = webdriver.Firefox() # t stands for tab as in browser tab in my mind
t.implicitly_wait(10)
t.get('https://www.quantopian.com/algorithms/')
o = t.find_element_by_xpath("//body") # o stands for object
o.send_keys(Keys.ESCAPE) # clearing the popup
o = t.find_element_by_link_text("Hello World Algorithm")
o.click()
''' for the fun of it if you want to run the backtest
o = t.find_element_by_xpath('//body')
o.send_keys(Keys.CONTROL + 'b')
o.send_keys(Keys.ESCAPE)
'''
print t.find_element_by_id('code-area').text
Run Code Online (Sandbox Code Playgroud)
这是输出
1 …Run Code Online (Sandbox Code Playgroud)