第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 PyQt5 獲取 Qt Designer 中自定義(升級(jí))小部件中另一個(gè)小部件的當(dāng)前值

使用 PyQt5 獲取 Qt Designer 中自定義(升級(jí))小部件中另一個(gè)小部件的當(dāng)前值

瀟瀟雨雨 2023-12-29 10:18:37
我已經(jīng)使用 Qt Designer 為我的應(yīng)用程序創(chuàng)建了 ui。UI 包括兩個(gè)小部件。具有不同值的下拉列表(ComboBox),每個(gè)值代表一年(2015、2025、2035)和一個(gè)在地圖上加載 shapefile 的自定義小部件:這是 UI 的屏幕截圖(另外,這里是library.ui文件):這是我連接到 ui的index.py文件:import sysfrom os import environfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtWidgets import *from PyQt5.uic import loadUiTypeui,_=loadUiType('library.ui')def suppress_qt_warnings():    environ["QT_DEVICE_PIXEL_RATIO"] = "0"    environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"    environ["QT_SCREEN_SCALE_FACTORS"] = "1"    environ["QT_SCALE_FACTOR"] = "1"class MainApp(QMainWindow, ui):    def __init__(self):        QMainWindow.__init__(self)        self.setupUi(self)def main():    suppress_qt_warnings()    app=QApplication(sys.argv)    window = MainApp()    window.show()    sys.exit(app.exec_())if __name__ == '__main__':    main()這是與我的自定義小部件( leafwidget.py )關(guān)聯(lián)的文件:import foliumimport os.pathfrom PyQt5 import QtCore, QtWebEngineWidgetsfrom PyQt5.QtWidgets  import *import geopandas as gpdCURRENT_DIR = os.path.dirname(os.path.realpath(__file__))class LeafWidget (QWidget):    def __init__(self, parent=None):        QWidget.__init__(self, parent)        self.view = QtWebEngineWidgets.QWebEngineView()        shp_filename = os.path.join(CURRENT_DIR, "input", '2015_loaded_NoCC.dbf')        shp_file = gpd.read_file(shp_filename)        shp_file_json_str = shp_file.to_json()        m = folium.Map(location=[39.764075, -86.159019], zoom_start=10)        folium.GeoJson(shp_file_json_str).add_to(m)正如您在我的自定義小部件類 (LeafWidget) 中看到的,dbf 文件的名稱以年份值 (2015、2025、2035) 開頭,后跟“_loaded_NocCC.dbf”(例如“2015_loaded_NoCC.shp”等)?,F(xiàn)在,我需要從下拉列表中訪問(wèn)所選值(假設(shè)為2025),然后在地圖中顯示相應(yīng)的 shapefile(2025 _loaded_NoCC.shp)。我可以使用index.py中的self.ComboBox.currentText()輕松訪問(wèn) ComboBox 的值,但在 leafletwidget 類(leafwidget.py)中,我無(wú)法訪問(wèn)self.ComboBox.currentText()并收到錯(cuò)誤基本上我的類沒(méi)有屬性“ComboBox”。那么,如何訪問(wèn) LeafWidget 類中 ComboBox 的值?
查看完整描述

1 回答

?
回首憶惘然

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊

您必須創(chuàng)建一個(gè)方法來(lái)更新將顯示的 shapefile,并在每次選擇新選項(xiàng)生成新路徑時(shí)調(diào)用該方法:


import folium


from PyQt5 import QtCore, QtWebEngineWidgets

from PyQt5.QtWidgets import *

import geopandas as gpd



class LeafWidget(QWidget):

    def __init__(self, parent=None):

        QWidget.__init__(self, parent)

        self.view = QtWebEngineWidgets.QWebEngineView()

        lay = QVBoxLayout(self)

        lay.addWidget(self.view)

        self.tmp_file = QtCore.QTemporaryFile("XXXXXX.html")


    def set_shapefile(self, filename):

        shp_file = gpd.read_file(filename)

        shp_file_json_str = shp_file.to_json()

        m = folium.Map(location=[39.764075, -86.159019], zoom_start=10)

        folium.GeoJson(shp_file_json_str).add_to(m)

        if self.tmp_file.open():

            m.save(self.tmp_file.fileName())

            url = QtCore.QUrl.fromLocalFile(self.tmp_file.fileName())

            self.view.load(url)

import sys

import os.path


from os import environ

from PyQt5.QtCore import *

from PyQt5.QtGui import *

from PyQt5.QtWidgets import *


from PyQt5.uic import loadUiType


CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))



ui, _ = loadUiType(os.path.join(CURRENT_DIR, "library.ui"))



def suppress_qt_warnings():

    environ["QT_DEVICE_PIXEL_RATIO"] = "0"

    environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"

    environ["QT_SCREEN_SCALE_FACTORS"] = "1"

    environ["QT_SCALE_FACTOR"] = "1"



class MainApp(QMainWindow, ui):

    def __init__(self):

        QMainWindow.__init__(self)

        self.setupUi(self)

        self.comboBox.currentTextChanged.connect(self.handle_currentTextChanged)

        self.handle_currentTextChanged(self.comboBox.currentText())


    def handle_currentTextChanged(self, text):

        filename = shp_filename = os.path.join(

            CURRENT_DIR, "input", "{}_loaded_NoCC.shp".format(text)

        )

        self.LeafWidget.set_shapefile(filename)



def main():

    suppress_qt_warnings()

    app = QApplication(sys.argv)

    window = MainApp()

    window.show()

    sys.exit(app.exec_())



if __name__ == "__main__":

    main()


查看完整回答
反對(duì) 回復(fù) 2023-12-29
  • 1 回答
  • 0 關(guān)注
  • 242 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)