Кнопки , выпадающие списки, не отображающиеся в сетке с помощью tkinter

#python-3.x #user-interface #tkinter

#python-3.x #пользовательский интерфейс #tkinter

Вопрос:

Следующее приложение просто открывает графический интерфейс для вызова подпроцесса с помощью простой комбинации и пары кнопок, но я не могу видеть кнопки при запуске только пустого окна с именем, это работает на моем другом компьютере, который я до сих пор использовал для разработки на Python . Все пакеты тоже установлены. Любая помощь приветствуется

 import tkinter as tk from tkinter import ttk from functools import partial import subprocess from subprocess import Popen import os  Erase_cmd = 'openocd -s ../scripts -c "set PSOC4_USE_MEM_AP 1; set PSOC4_USE_ACQUIRE 1" -f interface/kitprog3.cfg -f target/psoc4.cfg -c "kitprog3 power_config on 3300; init; reset init; kitprog3 power_control on; flash erase_sector 0 0 last; shutdown"'.split()  class App(ttk.Frame):    def _init_(self, parent):    ttk.Frame._init_(self)  # Make the app responsive  for index in [0, 1, 2]:  self.columnconfigure(index=index, weight=1)  self.rowconfigure(index=index, weight=1)    self.combo_list = ["FirmwareHexSel"]  # Create widgets  self.setup_widgets()    def setup_widgets(self):    #Filter out hex in the Current path  folder = os.path.realpath('')  Hexfilelist = [fname for fname in os.listdir(folder) if fname.endswith('.hex')]    #Hex Dropdown  self.FirmwareHexSel = ttk.Combobox(self, values=Hexfilelist, state='readonly')  self.FirmwareHexSel.set('Input Firmware')  self.FirmwareHexSel.grid(row=1, column=1 , sticky="nsew", padx=0, pady=0)      #Action Button  button_1 = ttk.Button(  self,text='Program Firmware',style="Accent.TButton",command=partial(self.button_pressed),  ).grid(row=2, column=2 , sticky="nsew", padx=1, pady=1)     def button_pressed(self):  callProcess = subprocess.call(Erase_cmd, shell=False)  if __name__ == '__main__':   root = tk.Tk()  root.title("Modus Programmer")   app = App(root)  app.pack(fill="both", expand=True)   # Set a minsize for the window, and place it in the middle  root.update()  root.minsize(root.winfo_width(), root.winfo_height())  x_cordinate = int((root.winfo_screenwidth() / 2) - (root.winfo_width() / 2))  y_cordinate = int((root.winfo_screenheight() / 2) - (root.winfo_height() / 2))  root.geometry(" {} {}".format(x_cordinate, y_cordinate))  app.mainloop()  

Комментарии:

1. _init_ должно быть __init__ — два подчеркивания с каждой стороны init

2. @Дерек: в данном случае это не проблема. Это плохая практика, но она не вызывает этой проблемы.

3. @BryanOakley, Который быстро решил проблему, Почему это не было помечено как ошибка выполнения во время выполнения?

4. Он не был помечен, потому что это не незаконный синтаксис.

5. Да, @Брайан Оукли, я посмотрел на это более подробно, и есть множество проблем.