#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. Да, @Брайан Оукли, я посмотрел на это более подробно, и есть множество проблем.