当前位置: 首页 > 知识库问答 >
问题:

tkinter小部件在不同分辨率的监视器上的位置错误

娄学文
2023-03-14

我正在和我的朋友开发一个小问答游戏。我正在使用place(relx=posx,rely=posy)在屏幕上定位一个小部件(tk.button),问题是当我在笔记本电脑上运行代码时,我得到一个结果,而他得到另一个结果。

我的结果:

他的结果是:

我们使用不同的操作系统(我使用Linux,他使用Windows),但我认为这里的问题是我们的监视器分辨率,它们是不同的。这到底是什么问题?我该怎么解决这个?

共有1个答案

季稳
2023-03-14

因为Tkinter使用操作系统的本机小部件,所以GUI在不同的操作系统中看起来会有所不同。因此,Tkinter不能控制UI中的每个元素。

布莱恩·奥克利写道:

是的,tkinter应用在不同的平台上看起来会有所不同。这是故意的。在可能的情况下,Tkinter将使用本机小部件--操作系统提供的小部件。这意味着Tkinter并不能最终控制GUI的每个方面。

在大多数情况下,这是理想的行为。您希望Windows上的按钮看起来像Windows按钮,您希望OSX上的按钮看起来像OSX按钮。这也意味着你可能会在Windows7和Windows8上得到不同的按钮--tkinter只是使用操作系统给它的任何东西,而微软倾向于在每次重大修订时调整它的小部件。

你能在所有的平台上得到完全一样的外观吗?那要看情况。在Windows7和Windows8上只需少量的工作就可以得到几乎相同的结果。在Windows和Macintosh之间获得相同的外观将是非常困难的。

不幸的是,这些差异不仅会导致小部件的外观不同,而且还会导致布局差异。例如,不同的平台可能有不同的字体、不同的默认边框宽度以及默认的边距和填充。所有这些都有助于窗口的最终布局。

在您的具体案例中,最明显的区别是Windows7使用的字体比Windows8略小。仅这一点就能对布局产生很大影响。在Windows7上,McListBox小部件的边框似乎比Windows8上的大。我对这个小部件一无所知,所以它可能会根据平台有不同的默认值。

这些问题中的大多数都可以通过为边框、填充、字体等使用显式值来解决。有时这需要一些实验。

 类似资料:
  • 问题内容: 获得监视器分辨率(最好是在元组中)的最简单方法是什么? python 屏幕 分辨率 问题答案: 在Windows上: 如果使用高分辨率屏幕,请确保你的python解释器为HIGHDPIAWARE。

  • 因此,我有一个SurfaceView类绘制所有对象。 例如,当我画一个圆时,我必须指定一个大小 有没有办法根据屏幕分辨率和密度的大小来调整尺寸 因为我在画圆时,我希望它在低分辨率设备上的大小与在高分辨率设备上的大小相同。 当绘制半径为50px的圆时,较小屏幕上的圆比较大屏幕上的圆大。 有什么想法吗? 编辑:我知道在创建一些布局时,我可以使用密度像素。但我不是在做布局,我是在surfaceview上

  • 好的,这里有一个奇怪的问题,我有问题(用gcc btw编译) 下面是用于命令提示的Mandelbrot分形生成器的源代码。我以前做过这项工作,我想加快自己的测试速度,看看我能以多快的速度生成命令提示符中实际生成Mandelbrot分形所需的代码。我经常这样做是为了给自己找点乐子 不管怎样,我遇到了一个新问题,我不太明白问题是什么。当分形呈现时,无论我设置了多少次迭代或什么转义值,它都将始终显示为椭

  • 我在Ubuntu 12.04 64位上使用OpenCV 2.4.5。我希望能够设置我的罗技C310网络摄像头输入的分辨率。相机支持高达1280x960在30fps,我能够在guvcview在这个分辨率查看视频。但是OpenCV总是以640x480的速度获取视频。 试图用cap更改分辨率。设置(CV\U CAP\U PROP\U FRAME\U WITH,1280)和CAP。创建视频捕获封盖后立即设

  • 我正在OpenCV(2.4.8)中创建一个程序,可以读取视频文件并对其进行计算。对于这些计算,我不需要高分辨率的帧,我可以用640*360作为分辨率。 在早期的测试中,我连接了网络摄像头,我使用了: 它完美地调整了图像的大小。现在,我要进入下一步,我想用我的程序来存储视频,而不是一个实时提要(我用来测试)。当我用源文件路径(字符串)更改“0”时,将加载文件,但分辨率仍为1920*1080。 我做错

  • 我已经添加了一个图像作为画布子级,该图像只是一个布局,以装备UI文本元素,如下图所示。 在这里,黑色的轮廓是图像,红色的轮廓是它们的边界,我们可以在编辑器中看到,蓝色的文本是用户界面文本元素,锚预设底部拉伸,右=100。画布渲染模式是屏幕叠加,按屏幕大小缩放,参考分辨率为1920x1080。因此,在图1中,用户界面文本在中间,但在图2(不同的分辨率)中,它看起来不像在中间。