#python #pyqt #pyqt5 #qt-designer
#python #pyqt #pyqt5 #qt-designer
Вопрос:
Я новичок в Qt и PyQt, и я признателен, если кто-нибудь сможет мне в этом помочь. Я пытаюсь добавить карту листовки в графический интерфейс, который я создаю с помощью Qt designer и Python. Поскольку такого виджета нет, я создаю простой виджет в Qt Designer и продвигаю его в «LeafWidget», как показано ниже:
Я сохраняю этот файл как (user_interface.пользовательский интерфейс), а затем в моем index.py файл (в той же папке), я использую класс leafWidget (с тем же именем, что и то, что определено в Qt Designer) для определения этого нового виджета. Я не уверен, правильно это или нет. Мой «index.py » файл, который я запускаю, выглядит так, как показано ниже.
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from pyqtlet import L, MapWidget
from PyQt5.uic import loadUiType
ui,_=loadUiType('user_interface.ui')
class LeafWidget (QWidget):
def __init__(self):
QWidget.__init__(self)
self.mapWidget = MapWidget()
self.map = L.map(self.mapWidget)
self.map.setView([39.764075, -86.159019], 10)
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png').addTo(self.map)
self.layout = QVBoxLayout(self)
self.layout.addWidget(self.mapWidget)
self.show()
class MainApp(QMainWindow, ui):
def __init__(self):
QMainWindow.__init__(self)
self.setupUi(self)
self.mainWindow_tabWidget.setCurrentIndex(1)
def main():
app=QApplication(sys.argv)
window = MainApp()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Когда я запускаю его, он открывает окно, но место для виджета карты пусто, как вы видите ниже. Правильно ли я определяю этот класс? В моем классе MainApp мне нужно как-то добавить этот новый пользовательский виджет? Я не получаю никаких конкретных ошибок в своей консоли отладки, поэтому я не уверен, чего мне не хватает.
Комментарии:
1. Правильно ли вы установили для файла заголовка тот же путь? В вашем случае это должен быть «заголовок». В любом случае, вы можете поделиться файлом пользовательского интерфейса?
2. вы имеете в виду, когда я продвигаю виджет в Qt designer? Разве заголовок не генерируется автоматически? В любом случае, вот ссылка на файл пользовательского интерфейса: drive.google.com/file/d/1EkWQ3uvS5HC-EnkUQYfczEPUu21HHG3R /…
3. Нет. Поле заголовка должно быть фактическим путем к файлу, который содержит продвигаемый виджет, записанный как оператор импорта python. Измените это на «index», поскольку ваш файл называется «index.py » (извините, я перепутал термины раньше).
4. итак, когда я добавляю сюда «расширенное имя класса»: drive.google.com/file/d/119hWtwvujyF08rhkrYyMsLDBQZPKCPdz /… , заголовочный файл будет сгенерирован автоматически. допустим, я набираю «leafwidget», а заголовок будет «leafwidget.h» . Вы говорите, что в моем index.py , Я должен добавить «импортировать leafwidget» или что? Извините.. как я уже сказал, я довольно новичок во всем этом
5. У меня нет доступа к этому файлу. Также обратите внимание, что имя класса должно быть одинаковым в вашем файле python и в продвигаемом виджете, включая ту же заглавную букву.