Tkinter Unix和Windows不兼容

大家好,
我正在尝试为我的项目创建自定义TKINTER/PMW小部件.
在Unix(Solaris)下测试了我的小部件后,我在下面尝试了它们
Windows和我感到惊讶.
小部件以不同的方式出现.
以下简单代码段展示了不同的区别:
root = tk()
w = canvas(root,width = 12,高度= 12,bd = 4,浮雕=升高,
bg ='青色')
w.create_rectangle(5,5,16,16,fill ='blue',utline ='black')
w.pack()
w2 = canvas(root,width = 12,高度= 12,bd = 0,浮雕=升高,
bg ='紫色')
w2.create_oval(0,0,12+1,12+1,fill ='blue',utline ='')
w2.pack()
w3 = canvas(root,width = 32,高度= 32,bd = 4,浮雕=升高,
bg ='紫色')
w3.Create_Oval(4+0,4+0,4+32+1,4+32+1,填充='Blue',utline ='')
w3.pack()
root.mainloop()
//
我注意到了差异,因为矩形(或椭圆形)对象
帆布覆盖了整个帆布,因此大小的差异很小
非常明显.
由于TKINTER是TK的薄包装层,我怀疑
差异植根于TK.
我在Unix下使用TK8.5,而Windows下的Python则使用TK8.4.
由于我在带有TK8.5的Windows下无法访问Python,所以我
无法验证Windows的TK8.5下是否已解决此问题.
//
所以,这是我的问题:
(1)可以在带有TK8.5的Windows下访问Python的任何人
验证问题是否已解决.
如果问题是固定的,则将矩形和椭圆形刻在
画布边界很好.
如果没有
我认为一个像素更大.边界宽度也不正确
(右侧是一个像素宽).
(2)当Windows下的Python的正式分布使用TK8.4,
什么是使我的小部件在下面正确工作的最佳方法
两个环境?
- 我可以使用sys.platform以不同的代码,以便它们看起来
相同的.
- 恐怕在最终引入TK8.5时会造成问题
到窗户下的python.
有什么建议么?
Aki Niimura

# 回答1


在2008年8月27日星期三06:50:30 +0200,akineko 我没有真正测试您的代码,但我知道有一些问题
现在有一段时间的帆布救济和边界.例如,
画布滚动时,帆布边框倾向于消失.
不知道它是否在最新版本中修复.
通常的解决方法是用平坦的浮雕创建帆布和0
边界,如果您想通过周围的框架添加浮雕.在
您的示例,对于第一个画布,那将是:
F =帧(root,bd = 4,浮雕=升高)
f.pack()
w =帆布(f,宽度= 12,高度= 12,bg ='cyan')
w.create_rectangle(1,1,1,12,12,填充='蓝色',utline ='black')
w.pack()
这可能会解决您的问题.
Hth
- -
python -c" print'.
'u(17zx(%,5.zmz5(17l8(%,5.z*)(93-965 $ l7+ - '])"

标签: python

添加新评论