Я использую Ubuntu 18.04 с python 3.8.
Это проблема, с которой я сталкиваюсь с тех пор, как начал использовать Tkinter.
Каждый раз, когда я пишу код, по какой-то причине , GUI зависает при загрузке. Я предполагаю, что это потому, что программа, которую я собираюсь написать, включает в себя множество кнопок (в частности, 15x15 = 225). Однако вместо того, чтобы загружаться медленнее или что-то еще, окно GUI отказывается отображаться.
Единственное «псевдорешение», которое я случайно обнаружил, - это нажатие клавиши ctrl.
Почему это происходит и почему нажатие клавиши ctrl решает эту проблему?
Вот код: Для запуска установите tkinter и введите python3 controller.py
model.py
class Model:
def __init__(self):
'''
'''
controller.py
from model import Model
from view import View
class Controller:
def __init__(self):
self.model = Model()
self.view = View(self)
def main(self):
self.view.main()
if __name__ == '__main__':
scrabble = Controller()
scrabble.main()
view.py
import tkinter as tk
from tkinter import ttk
class View(tk.Tk):
PAD = 15
def __init__(self,controller):
super().__init__()
self.controller = controller
self.value_var = tk.StringVar()
self.title('Scrabble')
self._make_main_frame()
self._make_buttons()
def main(self):
self.mainloop()
##Private Methods
def _make_main_frame(self):
self.main_frm = ttk.Frame(self)
self.main_frm.pack(padx=self.PAD, pady=self.PAD)
def _make_buttons(self):
outer_frm= ttk.Frame(self.main_frm)
outer_frm.pack()
frm = ttk.Frame(outer_frm)
frm.pack()
btns_row = 0
for i in range(self.PAD*15):
if btns_row == self.PAD:
frm = ttk.Frame(outer_frm)
frm.pack()
btns_row = 0
btn = ttk.Button(frm, text=i)
btn.pack(side='left')
btns_row += 1