с ООП идёт туго от слова совсем (вроде и читал, и с ролики смотрел) - не получается и всё... подскажите как корректно реализовать идею?
*некоторые ненужные (исправно работающие) моменты помечу
pass, чтобы не громоздить код.
from tkinter import *
import webbrowser
class FuncButton:
'''В данном классе происходит исполнение функций, при нажатии на кнопки'''
def btn1():
pass #В pass, новые окна не создаются. Когда я нажимаю на
def btn2(): #кнопку вне класса, просто запускается простая функция -
pass #и всё работает как надо
def btn3():
pass
def website(): #Вот тут начинаются проблемы, если кнопки нет
site_root = Tk() #внутри website() - всё работает нормально
site_root.geometry('600x500')
site_root.title('New window')
site_root.resizable(width=False, height=False)
btnSc = Button(site_root, text='Проба', bg='blue', font=('Arial', 16, 'bold'),
command=lambda: webbrowser.get(using=None).open_new_tab('https://www.youtube.com'))
btnSc.pack(x=50, y=50)
site_root.mainloop()
main_root = Tk()
main_root.geometry('600x500')
main_root.title('Main window!')
main_root.resizable(width=False, height=False)
main_root.image = PhotoImage(file='BG.png')
bg_logo = Label(main_root, image=main_root.image)
bg_logo.grid(row=0, column=0)
btnOne = Button(main_root, text='ONE', bg='yellow', font=('Arial', 16, 'bold'),
command=lambda: FuncButton.btn1())
btnOne.place(x=88, y=155, width = 195, height=40)
btnTwo = Button(main_root, text='TWO', bg='red', font=('Arial', 16, 'bold'),
command=lambda: FuncButton.btn2())
btnTwo.place(x=88, y=200, width = 195, height=40)
btnThree = Button(main_root, text='THREE', bg='pink', font=('Arial', 16, 'bold'),
command=lambda: FuncButton.btn3())
btnThree.place(x=88, y=245, width=195, height=40)
btnS = Button(main_root, text='WEBSITE', bg='lightgreen', font=('Arial', 16, 'bold'),
command=lambda: FuncButton.website())
btnS.place(x=88, y=290, width=195, height=40)
main_root.mainloop()
Обычно вижу ошибки такого рода, но как лучше решить - без понятия:
Exception in Tkinter callback
Traceback (most recent call last):
1) File ". . .Programs\Python\Python311\Lib\tkinter\__init__.py", line 1948, in __call__
return
self.func(*args)
2) File ". . .Мой проект\main.py", line 52, in
command=lambda:
FuncButton.website())
3) File ". . .Мой проект\main.py", line 27, in website
btnS.pack(x=50, y=50)
4) File ". . .Programs\Python\Python311\Lib\tkinter\__init__.py", line 2452, in pack_configure
self.tk.call(
_tkinter.TclError: bad option "-x": must be -after, -anchor, -before, -expand, -fill, -in, -ipadx, -ipady, -padx, -pady, or -side
5)
(или ошибки после создания аргументов, self, имена переменных и прочее)