Tkinter-də yenidən ölçülməsi üçün düymələrin bir qrafikini necə yaratmaq olar?

Tkinter istifadə edərək, bir düyməyə bir grid yaratmaq üçün çalışıram (tıklanabilir bir hüceyrə təsiri əldə etmək üçün).

Mənim əsas problemim grid və autoresistiv düymələri edə bilməyim və ana pəncərəni yerləşdirməkdir.

Məsələn, griddə çox sayda düymələr olduğunda, gridin pəncərənin içərisinə oturması üçün düymələri sıxmaq yerinə, ekranın kənarından çıxan bir uzanmış çərçivə ala bilərəm.

Aradığım təsir, bütün mövcud məkanı dolduran bir griddir və sonra bu hüceyrələri uyğunlaşdırmaq üçün hüceyrələrini dəyişir. Sənədləri oxudum, amma hələ də necə işlədiyini anlaya bilmirəm.

Bu başlanğıc nöqtəsi olan əsas koddur:

 def __init__(self): root = Tk() frame = Frame(root) frame.grid() #some widgets get added in the first 6 rows of the frame grid #initialize grid grid = Frame(frame) grid.grid(sticky=N+S+E+W, column=0, row=7, columnspan=2) #example values for x in range(60): for y in range(30): btn = Button(grid) btn.grid(column=x, row=y) root.mainloop() 
25
29 сент. Kiril 29 sentyabrda müəyyənləşdi. 2011-09-29 03:54 '11 at 3:54 2011-09-29 03:54
@ 3 cavab

Satır və sütunları qeyri-sıfır ağırlığa uyğunlaşdırmaq üçün əlavə yer çəkmək lazımdır:

 for x in range(60): Grid.columnconfigure(grid, x, weight=1) for y in range(30): Grid.rowconfigure(grid, y, weight=1) 

Düymələrinizi hüceyrəni doldurmaq üçün genişləndirmək üçün də özelleştirmeniz lazımdır:

 btn.grid(column=x, row=y, sticky=N+S+E+W) 

Bunun sonuna qədər edilməsi lazımdır, buna görə tam bir nümunədir:

 from tkinter import * root = Tk() frame=Frame(root) Grid.rowconfigure(root, 0, weight=1) Grid.columnconfigure(root, 0, weight=1) frame.grid(row=0, column=0, sticky=N+S+E+W) grid=Frame(frame) grid.grid(sticky=N+S+E+W, column=0, row=7, columnspan=2) Grid.rowconfigure(frame, 7, weight=1) Grid.columnconfigure(frame, 0, weight=1) #example values for x in range(10): for y in range(5): btn = Button(frame) btn.grid(column=x, row=y, sticky=N+S+E+W) for x in range(10): Grid.columnconfigure(frame, x, weight=1) for y in range(5): Grid.rowconfigure(frame, y, weight=1) root.mainloop() 
37
29 сент. Cavab 29 sentyabrda Vaughn Cato tərəfindən verilir . 2011-09-29 04:23 '11 saat 04:23 'da 2011-09-29 04:23

@ Won Caton burada böyük cavab verdi . Lakin, təsadüfən onun nümunəsinə bir sıra kənar kod daxil etmişdir. İşdə nümunə olduğundan tam təmizlənmiş və daha mütəşəkkil bir nümunə.

 from tkinter import * #Create  Configure root root = Tk() Grid.rowconfigure(root, 0, weight=1) Grid.columnconfigure(root, 0, weight=1) #Create  Configure frame frame=Frame(root) frame.grid(row=0, column=0, sticky=N+S+E+W) #Create a 5x10 (rows x columns) grid of buttons inside the frame for row_index in range(5): Grid.rowconfigure(frame, row_index, weight=1) for col_index in range(10): Grid.columnconfigure(frame, col_index, weight=1) btn = Button(frame) #create a button inside frame btn.grid(row=row_index, column=col_index, sticky=N+S+E+W) root.mainloop() 

Ekran görüntüləri:

İlk açıldığında (kiçik):

border=0

2019

07 авг. Cavriel Staples tərəfindən verilmiş cavab 07 Av 2016-08-07 03:39 '16 at 3:39 2016-08-07 03:39

Düymələri maksimum pəncərə böyütməsində genişləndirmək üçün button.grid girişini aşağıdakı kimi dəyişməyə cəhd edin:

 btn.grid(column=x, row=y, sticky=N+S+E+W) 
2
30 апр. Toni Waite tərəfindən aprelin 30-da cavab verildi 2015-04-30 10:52 '15 saat 10:52 'da 2015-04-30 10:52

haqqında digər suallar və ya bir sual