有没有办法使用ttk Treeview和可编辑的行?
我的意思是它应该更像一张桌子.例如,双击项目使#0列'可编辑'.
如果这是不可能的,任何允许鼠标选择项目的方法都可以.我在tkdocs或其他文件中没有发现任何这种情况.
我有一个chrome扩展,有一个由manifest和一个后台脚本注入的内容脚本.
{
"manifest_version": 2,
"name": "Test",
"permissions": [
"tabs", "<all_urls>", "activeTab", "storage"
],
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": [
"content/autofill/lib_generic.js",
"content/autofill/lib.js"],
"run_at": "document_end"
}
],
"web_accessible_resources": [
"content/specific_scripts/*"
],
"background": {
"scripts": ["background.js"],
"persistent": false
}
}
Run Code Online (Sandbox Code Playgroud)
lib_generic.js包含一个名为的函数apply_forms(...)(其描述并不重要).该函数从lib.js文件中调用.但是这个过程不适用于几个页面,所以对于每个这样的页面,我有一个特殊的脚本 - 也只有一个名为的函数apply_forms(...).
我有一个函数,它将当前域作为输入并返回所需特定脚本的名称,或者false是否应使用泛型.
有太多的文件,它的逻辑更复杂,所以我不能只列出指令中的所有(url, script)对"content_scripts"(我也不想将所有特定文件作为内容脚本注入).
我在背景中尝试过类似的东西(请注意,它仅用于演示):
var url = ""; //url of current tab
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if(changeInfo.status == "complete") {
var filename = getSpecificFilename(url);
chrome.tabs.executeScript(tabId, …Run Code Online (Sandbox Code Playgroud) javascript google-chrome google-chrome-extension content-script
我有一个 tkinter 应用程序(作为主线程运行),在其中我打开新的顶级窗口 - 它是一个日志窗口打印测试结果(测试是使用 selenium webdriver 执行的)。该对话框也是所有测试的调用者。
所以我想显示对话框(作为顶层,整个应用程序还有一个窗口),运行测试,等到测试完成并打印结果,然后对另一个测试单元执行相同的操作。但我不想让窗口在测试过程中冻结。
我尝试过使用线程,但显然它可以像那样工作。在这种情况下,在测试完成之前对话框甚至不会启动。
这是对话框窗口的代码。
class TestDialog(tkinter.Toplevel):
def __init__(self, parent, tester, url):
super().__init__(parent)
self.parent = parent
self.webtester = tester;
self.__initComponents()
self.run(url)
self.wait_window(self)
def __initComponents(self):
self.transient(self.parent)
frame = tkinter.Frame(self)
self._tarea = tkinter.Text(frame, state='disabled',wrap='none', width=55, height=25)
vsb = tkinter.Scrollbar(frame, orient=tkinter.VERTICAL, command=self._tarea.yview)
self._tarea.configure(yscrollcommand=vsb.set)
self._tarea.grid(row=1, column=0, columnspan=4, sticky="NSEW", padx=3, pady=3)
vsb.grid(row=1, column=4, sticky='NS',pady=3)
frame.grid(row=0, column=0, sticky=tkinter.NSEW)
frame.columnconfigure(0, weight=2)
frame.rowconfigure(1, weight=1)
window = self.winfo_toplevel()
window.columnconfigure(0, weight=1)
window.rowconfigure(0, weight=1)
self.bind("<Escape>", self.close)
self.protocol("WM_DELETE_WINDOW", self.close)
self.grab_set()
def appendLine(self, msg):
self._tarea['state'] = 'normal' …Run Code Online (Sandbox Code Playgroud) 我正在使用phantomJS驱动程序(在python 3.3中)。我通过初始化
self._phantom = webdriver.PhantomJS('path/to/phantomJS.exe')
这样就可以了,控制台不会出现。但是,当我使用cx_freeze到exe文件构建项目时,控制台确实出现了。
这没什么大问题,但是我的程序打开了大约3个窗口和对话框,而另一个窗口(尤其是控制台)可能会让客户感到困惑或分散注意力。
感谢您的意见。
有没有办法,如何强制变异观察者忽略回调函数引起的DOM变化?
现在我有:
var config = { attributes: true, childList: true, characterData: true };
var target = document.body;
var timer;
// create an observer instance
var observer = new MutationObserver(function(mutations) {
// fired when a mutation occurs
timer = setTimeout(function () {
_3rd_party_callback();
}, 500);
});
observer.observe(target, config);
Run Code Online (Sandbox Code Playgroud)
问题在于, _3rd_party_callback回调会导致 DOM 更改,因此它永远不会停止。顾名思义,它是第三方函数,我不能改变(实际上它的 DOM 操作是它的目的)。
所以我所做的是分别在回调中调用函数之前和之后断开连接并启动观察者。
observer.disconnect()
_3rd_party_callback();
observer.observe(target, config);
Run Code Online (Sandbox Code Playgroud)
它似乎有效,但我担心,由于事件的异步处理,当其他人进行更改并错过它们时,我可能会禁用观察者。
不太可能有办法将更改与页面本身和回调分开,但我会尝试一下。