Tkinter GUI 程序中 Canvas object 与其 parent 顶层 object 右侧之间的间隙

A gap between a Canvas object and its parent Toplevel object right side in a Tkinter GUI program

我正在使用 Tkinter 开发 GUI 程序。它将在 7" 触摸屏、全屏上工作。 首先我做了主标题

import Tkinter as tk

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 480

class Application(tk.Toplevel):
  def __init__(self, *args, **kwargs):
    tk.Toplevel.__init__(self, *args, **kwargs)
    self.overrideredirect(True)
    self.wm_geometry("800x480")
    self.cnvs = None
    self.showTitle()

  def showTitle(self):
    self.config(bg = 'white', borderwidth = 0)
    self.cnvs = TitleCanvas(self)
    self.cnvs.grid(sticky = tk.N + tk.E + tk.W + tk.S)

class TitleCanvas(tk.Canvas):
  def __init__(self, parent):
    tk.Canvas.__init__(self, parent, width = SCREEN_WIDTH, height = SCREEN_HEIGHT)
    self.widgets = {}
    self.init_ui()

  def init_ui(self):
    # BG Color: White
    self.config(bg = 'white', borderwidth = 0)

    # Blank Area
    # Row: 0
    self.lblBlank = tk.Label(self, background = 'white', borderwidth = 0, text = '')
    self.lblBlank.grid(pady = 20, row = 0)

    # Title Image
    # Row: 1
    self.photoLogo = tk.PhotoImage(file = 'samplelogo.gif')
    self.lblLogo = tk.Label(self, image = self.photoLogo)
    self.lblLogo.grid(padx = 100, pady = 40, row = 10, sticky = tk.E + tk.W)

    # Text1
    # Row: 2
    self.lblLoad = tk.Label(self, background = 'white',
                      font = ("Helvetica", -30), text = "Loading...")
    self.lblLoad.grid(pady = 60, row = 2, sticky = tk.E + tk.W)

    # Text2
    # Row: 3
    self.lblVer = tk.Label(self, background = 'white',
                     font = ("Helvetica", -30), text = "Company and Version")
    self.lblVer.grid(pady = 30, row = 3, sticky = tk.E + tk.W)

app = Application()
app.mainloop()

Canvas object 应该填满整个屏幕。但它没有到达右侧的边缘。 要消除差距,我应该怎么做?

我用 create_image() 和 create_text() 解决了这个问题。这些方法能够设置小部件的位置。

TitleCanvas.init_ui()方法可以这样修改;

def init_ui(self):
  #BG Color: White
  self.config(bg = 'white', borderwidth = 0)

  # Background 
  self.create_rectangle((0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), fill = 'white')

  # Title Image
  #Center Point: (400, 160)
  self.photoLogo = tk.PhotoImage(file = 'samplelogo.gif')
  self.create_image(400, 160, anchor = tk.CENTER, image = self.photoLogo)

  # Text1
  self.create_text((400, 315), text = 'Loading...')

  # Text2
  self.create_text((400, 435), text = 'Company and Version')