Python Tkinter GUI程序中画布对象与其父顶级对象右侧之间的间隙
我正在用Tkinter开发一个GUI程序。它将在7英寸触摸屏、全屏上工作。 首先,我做了主标题Python Tkinter GUI程序中画布对象与其父顶级对象右侧之间的间隙,python,python-2.7,tkinter,raspberry-pi3,Python,Python 2.7,Tkinter,Raspberry Pi3,我正在用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.overrideredi
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()
画布对象应该填满整个屏幕。但是它没有到达右侧的边缘。
要消除这个差距,我应该怎么做?我用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')
(您应该在示例中添加不同的背景以使间隙可见)这是否意味着每个小部件中的背景选项都会导致间隙?我删除了除Toplevel之外的所有背景选项,但间隙没有删除。我想这是因为另一个原因。我为什么在画布中使用grid()?问题已经解决。我使用create_image()并创建_text()方法,而不是grid()。谢谢您的帮助。