当前位置:   article > 正文

tkinter 让控件在屏幕居中、在父窗口居中_tkinter 控件相对于屏幕的位置

tkinter 控件相对于屏幕的位置

在屏幕居中

  1. # 窗体显示在屏幕中央
  2. def set_in_screen_center(tk_widget,winWidth=None,winHeight=None):
  3. """
  4. :param tk_widget: 部件,如果传入的是根窗口,必须指定长宽,要不只显示标题栏
  5. :param winWidth: 指定显示宽度
  6. :param winHeight: 指定显示长度
  7. :return:
  8. """
  9. # 获取根窗口
  10. root = tk_widget
  11. temp_root = None
  12. while 1:
  13. temp_root = root.master
  14. if temp_root is None:
  15. break
  16. root = temp_root
  17. # 获取屏幕分辨率
  18. screenWidth = root.winfo_screenwidth()
  19. screenHeight = root.winfo_screenheight()
  20. root.update()
  21. if winWidth is None:winWidth=tk_widget.winfo_width()
  22. if winHeight is None:winHeight=tk_widget.winfo_height()
  23. x = int((screenWidth - winWidth) / 2)
  24. y = int((screenHeight - winHeight) / 2)
  25. # 设置窗口初始位置在屏幕居中
  26. tk_widget.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
'
运行

在父窗口居中

  1. # 显示在窗口中间
  2. def set_in_windows_center(tk_widget,winWidth=None,winHeight=None):
  3. """
  4. :param tk_widget: 部件,不能传入根窗口
  5. :param winWidth: 指定显示宽度
  6. :param winHeight: 指定显示长度
  7. :return:
  8. """
  9. # 获取根窗口
  10. root = tk_widget
  11. temp_root = None
  12. while 1:
  13. temp_root = root.master
  14. if temp_root is None:
  15. break
  16. root = temp_root
  17. root.update()
  18. # 获取根窗口大小
  19. r_width = root.winfo_width()
  20. r_height = root.winfo_height()
  21. # 获取根窗口x,y
  22. r_x = root.winfo_rootx()
  23. r_y = root.winfo_rooty()
  24. if winWidth is None: winWidth = tk_widget.winfo_width()
  25. if winHeight is None: winHeight = tk_widget.winfo_height()
  26. print(f"根x:{r_x},根y:{r_y},根宽:{r_width},根长;{r_height}")
  27. if r_width > winWidth:
  28. x = int((r_x + (r_width - winWidth) / 2))
  29. else:
  30. x = r_x
  31. if r_height > winHeight:
  32. y = int((r_y + (r_height - winHeight) / 2))
  33. else:
  34. y = r_y
  35. # 设置窗口初始位置在指定窗口中间
  36. tk_widget.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
  37. # tk_widget.geometry("%sx%s+%s+%s" % (winWidth, winHeight, 400, 400))
  38. print(f"窗x:{x},窗y:{y},窗宽:{winWidth},窗长:{winHeight}")
'
运行

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/892346
推荐阅读
相关标签
  

闽ICP备14008679号