Добавление menuBar
Нужно добавить menuBar в код(ниже). Не понимаю как это сделать.
import ftplib
import sys
import easygui
from PyQt5.QtWidgets import QWidget, QGridLayout, QPushButton, QGraphicsOpacityEffect
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QIcon
# msg = "Введите информацию о сервере"
# fieldNames = ["IP Сервера", "Логин", "Пароль"]
# title = 'FTP'
# ftp_log = easygui.multpasswordbox(msg, title, fieldNames)
ftp = ftplib.FTP('192.168.0.1', 'Artem','1204')
# ftp.cwd('/disk1_1')
class App(QWidget):
def __init__(self):
super().__init__()
self.grid = QGridLayout()
self.ftp_lst()
self.a()
def ftp_lst(self):
self.file_lst = ftp.nlst()
self.len_file_lst = len(ftp.nlst())
self.setLayout(self.grid)
positions = [(i,j) for i in range(self.len_file_lst) for j in range(1)]
for position, name in zip(positions, self.file_lst):
if name == '':
continue
self.button = QPushButton(name)
self.grid.addWidget(self.button, *position)
self.button.clicked.connect(self.on_click)
self.show()
def update(self):
self.ftp_lst()
def on_click(self):
a = self.sender()
ftp.cwd(f'{ftp.pwd()}/{a.text()}')
self.update()
print(ftp.pwd())
print(a.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())```
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import sys
import ftplib
import easygui
from PyQt5.QtWidgets import QWidget, QGridLayout, QPushButton, QGraphicsOpacityEffect
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication, QMenuBar
from PyQt5.QtCore import QUrl, QRect
from PyQt5.QtGui import QIcon
# msg = "Введите информацию о сервере"
# fieldNames = ["IP Сервера", "Логин", "Пароль"]
# title = 'FTP'
# ftp_log = easygui.multpasswordbox(msg, title, fieldNames)
ftp = ftplib.FTP('192.168.0.1', 'Artem', '1204')
# ftp.cwd('/disk1_1')
class App(QWidget):
def __init__(self):
super().__init__()
self.grid = QGridLayout()
# ++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
self.menubar = QMenuBar(self)
self.menubar.setGeometry(QRect(0, 0, 766, 26))
self.file = self.menubar.addMenu('&Опции')
self.exitAction = QAction(QIcon('cross-exit.ico'), '&Exit', self)
self.exitAction.setShortcut('Ctrl+Q')
self.exitAction.setStatusTip('Exit application')
self.exitAction.triggered.connect(self.close)
self.file.addAction(self.exitAction)
# ++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.ftp_lst()
# self.a() # ---
self.a = None # +++
def ftp_lst(self):
self.file_lst = ftp.nlst()
self.len_file_lst = len(ftp.nlst())
self.setLayout(self.grid)
positions = [(i,j) for i in range(self.len_file_lst) for j in range(1)]
for position, name in zip(positions, self.file_lst):
if name == '':
continue
self.button = QPushButton(name)
self.grid.addWidget(self.button, *position)
self.button.clicked.connect(self.on_click)
# self.show()
def update(self):
self.ftp_lst()
def on_click(self):
a = self.sender()
ftp.cwd(f'{ftp.pwd()}/{a.text()}')
self.update()
print(ftp.pwd())
print(a.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
ex.resize(600, 400) # +
ex.show() # +++
sys.exit(app.exec_())
