小编Cai*_*son的帖子

在Swift中用逗号分隔多个if条件

我们已经知道可以在单个if/guard语句中使用逗号分隔多个可选绑定,但不能用&&例如

// Works as expected
if let a = someOpt, b = someOtherOpt {
}
// Crashes
if let a = someOpt && b = someOtherOpt {
}
Run Code Online (Sandbox Code Playgroud)

玩游戏,逗号风格的格式似乎也适用于布尔条件,虽然我无法在任何地方找到这个.例如

if 1 == 1, 2 == 2 {
}
// Seems to be the same as
if 1 == 1 && 2 == 2 {
}
Run Code Online (Sandbox Code Playgroud)

这是一种可接受的方法,用于评估多个布尔条件,并且它们的行为是,相同的&&还是技术上不同?

swift

15
推荐指数
3
解决办法
3263
查看次数

Tkinter overrideredirect 不再接收事件绑定

我有一个 tinter Toplevel 窗口,我想在没有框架或标题栏的情况下出现并且稍微透明,然后当鼠标移动到窗口上时固定。为此,我同时使用Toplevel.overrideredirect(True)Toplevel.attributes('-alpha', 0.75)。为此,我将<Enter><Leave>事件绑定到一个函数。

这些都在单独尝试时有效,但是当我将 overrideredirect 设置为 True 时,鼠标进入和离开的绑定不再有效。当我点击窗口时绑定调用,然后当我移动鼠标时,而不是当光标进入或离开窗口时。

我也尝试将这些绑定到一个框架,但没有进一步的运气。

toplevel = Toplevel(root)
toplevel.overrideredirect(True)
toplevel.attributes('-alpha', 0.75)
toplevel.bind('<Enter>', lambda x: mouseMovement(command='enter'))
toplevel.bind('<Leave>', lambda x: mouseMovement(command='leave'))
def mouseMovement(command):
    print('Callback: ' + command)
    if command == 'enter':
        toplevel.attributes('-alpha', 1)
    elif command == 'leave':
        toplevel.attributes('-alpha', 0.75)
Run Code Online (Sandbox Code Playgroud)

我曾尝试在此处使用类似问题的答案,但这会导致窗口具有所有标准的操作系统装饰,但关闭、最小化和放大按钮被简单地禁用。有没有办法可以摆脱标题栏,但仍然保留我的绑定?

python tkinter

7
推荐指数
1
解决办法
748
查看次数

在 Kotlin 中将 Any 转换为数组

我正在通过从Map<String, Any>Kotlin 中的a 加载数据来初始化一个类。由于此 Map 是直接从 JSON 收集的,因此我不确定是否存在任何给定的键,或者它的值是否属于我期望的类型。为了安全地打开这张地图,我正在执行以下操作,这似乎工作得很好:

a = rawData["A"] as? String ?: ""
Run Code Online (Sandbox Code Playgroud)

其中一些数据位于进一步嵌套的 JSON 中,我将其解压缩为数组;我试图以同样的方式做到这一点:

b = rawData["B"] as? Array<String> ?: arrayOf<String>()
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用数组(如上所述)进行此操作时,IntelliJ 大惊小怪,说

警告:(111, 30) Kotlin:未经检查的演员表:有吗?到数组<字符串>

这只是 IDE 使自己陷入困境,还是这种方法对于 Arrays 真的不安全,尽管对于其他类型似乎完全安全?

kotlin

6
推荐指数
2
解决办法
8042
查看次数

如何使用 python 访问在线托管的数据库?

我正在编写一个将由多个用户使用的脚本,并且我正在寻找一种方法来同步所有用户的设置和其他变量。我的第一直觉是使用在线数据库,但是浏览这个网站以及更广泛的网络我找不到任何东西。

我需要的是可以使用 python 脚本写入和读取的东西。这可以是一个数据库,但我也有多个在线托管帐户(Mega、Dropbox、Skydrive、Google Drive),如果有人知道我可以用来在这些服务中读取和写入文件的任何 API,那也可以。

这个问题是我一直在寻找的问题,但在合适的答案之前它被关闭为“不是一个真正的问题”。 /sf/ask/920452991/

需要明确的是,我正在寻找一种方法来编辑在线托管的数据库中的数据库条目,使用不同电脑上的脚本 - 以及一种读取它们的方法。

另外,如果有人知道我可以通过 Python 访问任何免费的在线数据库托管,我将非常感激 - 就像您可以获得免费的网络托管或免费的文件托管一样。

更新:感谢两位回答者,但不幸的是,当尝试 MySQLDb 时,我发现它只支持 python 2.x (抱歉 - 我忘了提及我使用 3)。然而,我在尝试时确实找到了另一种选择。MySQL 有自己的 python 连接器,可以通过此处的 Python 访问 MySQL 数据库(http://dev.mysql.com/doc/refman/5.6/en/connector-python.html),并且适用于两个 Python 版本(1 和 2) 。

python database

5
推荐指数
1
解决办法
1万
查看次数

通过框架之间的扩展实现 Swift 协议一致性

出于各种原因,我将 Swift iOS 应用程序的代码库拆分为一系列模块,主要以相当线性的方式相互依赖。这个问题的基础是:如果我在一个模块中有一个类,然后扩展它以符合另一个模块中的协议,该类型的所有对象是否会自动符合?. 我们暂时称它们为模块 1模块 2

这种模块化的结果是,并非给定 UITableView 类的每个单元格都将在同一模块中声明。所以为了允许我使用该模块之外的单元格,我声明了一系列描述单元格基本功能的协议。例如:

模块 1 中

public protocol ActionableCell {
    func performAction()
}
Run Code Online (Sandbox Code Playgroud)

这是 tableview 使用的,所以每次选择一个单元格时,如果它符合ActionableCellperformAction()调用它。这允许 tableview 处理它不知道的单元格上的点击。

因此,在 tableview 的类(模块 1)中:

open class SomeTableView: UITableView {
    // Blah

        open override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    // If the cell is actionable, inform it that it has been selected
    if let cell = tableView.cellForRow(at: indexPath) as? …
Run Code Online (Sandbox Code Playgroud)

protocols ios cocoapods swift

4
推荐指数
1
解决办法
894
查看次数

Tkinter:我如何确定Toplevel的位置?

标题说明了这一切,我有一段代码,我希望将其与旧位置相关联.

为此,我需要获取窗口的当前位置,然后使用设置新位置root.geometry('+x+y').如何找到TopLevel的当前位置?

python tkinter python-3.x

3
推荐指数
1
解决办法
5817
查看次数

标签 统计

python ×3

swift ×2

tkinter ×2

cocoapods ×1

database ×1

ios ×1

kotlin ×1

protocols ×1

python-3.x ×1