我正在按照问题回答here Bryan Oakley,但是尽管提问者说它有效,但却给了我这个错误。
root.geometry("+%d+%d" % (rootsize + (x, y)))
TypeError: not all arguments converted during string formatting
我做错了什么?
以下是我正在使用的代码:
w = root.winfo_screenwidth()
h = root.winfo_screenheight()
rootsize = tuple(int(_) for _ in root.geometry().split('+')[0].split('x'))
x = w/2 - rootsize[0]/2
y = h/2 - rootsize[1]/2
root.geometry("+%d+%d" % (rootsize + (x, y)))
答案 0 :(得分:1)
您要向tuple
添加元素,而不是将{em>添加到tuple
中的每个元素。
>>> a = (1,2)
>>> b = (3,4)
>>> a+b
(1, 2, 3, 4)
你需要类似下面的东西,它将每个tuple
并排放置,遍历每对元素,然后找到它们的sum()
(为清晰起见而打印):
>>> print(*map(sum, zip(a,b)), sep='\n')
4
6
您的代码中会出现这种情况:
root.geometry("+%d+%d" % (rootsize[0]+x, rootsize[1]+y))
答案 1 :(得分:0)
正在处理的字符串有两个表示占位符:rootsize + (x, y)
但您只传递一个值root.geometry()
- 这将只评估一个表达式。
根据root.geometry("+%d+%d" % (rootsize, (x, y))) # two separate args
# Or...
root.geometry("+%d" % (rootsize + (x, y))) # one arg
期待的内容,执行以下操作之一:
(x, y)
我假设"+%d" % (rootsize + (x, y)) # if rootsize is an instance of a class with
# `__add__` defined and handles tuples added
# to it; returning an int/numeric result, not
# a tuple. seems UNLIKELY. see next...
"+%d+%d" % (rootsize + x, rootsize + y) # two arguments each adding rootsize with x or y
"+%d+%d+%d" % (rootsize, x, y) # three arguments
代表一个元组。其他选择是:
root.geometry()
(不知道"{{ URL('/blog/'.$post->slug')}}"
期望什么,不能进一步建议。)