我在这里可能有些昏暗,但是我无法弄清楚为什么在调整窗口大小和Grid方法时,这个简单脚本中的ttk.Frame
小部件没有随Tk
窗口一起增长用来?我不希望图像的ttk.Label
默认情况下会随着窗口的大小而变化。但是,考虑到使用方法rowconfigure
和columnconfigure
,如果窗口大于标签,我期望标签周围会出现粉红色(框架的背景色)。我的错误在哪里?
#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
import tkinter as tk
import tkinter.ttk as ttk
from PIL import Image, ImageTk
IMAGE = './images/test.jpg'
class App( ttk.Frame ):
def __init__( self, master, **kwargs ):
self.master = master
super().__init__( master, style='app.TFrame', **kwargs )
photo = ImageTk.PhotoImage( Image.open( IMAGE ) )
self.screen = ttk.Label( self, image=photo, style='app.TLabel' )
self.screen.image = photo
self.screen.grid( row=0, column=0, sticky='nsew' )
def init_ttkStyle():
'''Initialize ttk widget styles.'''
s = ttk.Style()
s.configure( 'app.TFrame', background='pink' )
s.configure( 'app.TLabel', background='cyan', borderwidth=10, relief='ridge' )
return s
def main():
ROOT = tk.Tk()
appStyle = init_ttkStyle()
app = App( ROOT )
app.grid( row=0, column=0, sticky='nsew' ) # ?
app.columnconfigure( 0, weight=1 ) # ?
app.rowconfigure( 0, weight=1 ) # ?
#app.pack( expand=1, fill='both' ) #this works
ROOT.mainloop()
if __name__ == "__main__":
main()
答案 0 :(得分:1)
app
是Frame
小部件。在rowconfigure
小部件上使用columnconfigure
和Frame
时,它将按照您的规范进行网格化,但 root
窗口不会。它已在.pack
和expand
明确告知fill
整个root
窗口的情况下适用。{p>
要使其以类似的方式工作,请在rowconfigure
上执行columnconfigure
和root
。