鱼C论坛

 找回密码
 立即注册
楼主: 凊风

Pyside6求教20240414~~~

[复制链接]
 楼主| 发表于 2024-4-17 21:24:52 | 显示全部楼层
FishC 发表于 2024-4-17 21:24
要让`self.radioButton_2`自动选中,可以使用`setChecked(True)`方法。以下是修改后的代码示例:在`Mai ...

回复请注意Python格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-17 21:25:11 | 显示全部楼层
凊风 发表于 2024-04-17 21:24
回复请注意Python格式


非常抱歉没有注意到Python格式的要求,下面是修改后的格式化代码示例:

  1. from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox, QRadioButton
  2. from PySide6.QtCore import Qt, QUrl
  3. from PySide6.QtWebEngineWidgets import QWebEngineView
  4. import requests

  5. def search_website(website):
  6.     class MainWindow(QMainWindow):
  7.         def __init__(self):
  8.             super().__init__()
  9.             self.setWindowTitle("Bing搜索")
  10.             
  11.             self.web_view = QWebEngineView()
  12.             self.web_view.load(QUrl("https://www.bing.com"))
  13.             self.setCentralWidget(self.web_view)
  14.             
  15.             layout = QVBoxLayout()
  16.             self.search_input = QLineEdit()
  17.             self.search_button = QPushButton("搜索")
  18.             self.search_button.clicked.connect(self.search)
  19.             layout.addWidget(self.search_input)
  20.             layout.addWidget(self.search_button)
  21.             
  22.             self.radioButton_1 = QRadioButton("选项1")
  23.             self.radioButton_2 = QRadioButton("选项2")
  24.             layout.addWidget(self.radioButton_1)
  25.             layout.addWidget(self.radioButton_2)
  26.             
  27.             widget = QWidget()
  28.             widget.setLayout(layout)
  29.             self.setCentralWidget(widget)
  30.             
  31.             # 设置self.radioButton_2默认选中
  32.             if website == "https://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2023/index.html":
  33.                 self.radioButton_2.setChecked(True)

  34.         def search(self):
  35.             website = self.search_input.text()
  36.             if website:
  37.                 url = f"https://www.bing.com/search?q={website} site:{website}"
  38.                 response = requests.get(url)
  39.                 if response.status_code == 200:
  40.                     results = response.text
  41.                     # 在这里解析搜索结果,并提取相关网址
  42.                     urls = parse_results(results)
  43.                     if urls:
  44.                         # 将搜索到的第一个网址显示在WebView中
  45.                         self.web_view.load(QUrl(urls))
  46.                     else:
  47.                         QMessageBox.warning(self, "提示", "没有找到相关网址")
  48.                 else:
  49.                     QMessageBox.warning(self, "提示", "网络请求失败")
  50.             else:
  51.                 QMessageBox.warning(self, "提示", "请输入要搜索的网站")

  52.     app = QApplication()
  53.     window = MainWindow()
  54.     window.show()
  55.     app.exec()

  56. if __name__ == "__main__":
  57.     search_website("https://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2023/index.html")
复制代码


非常抱歉给你带来了困扰,请见谅。如果还有其他问题,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-17 21:41:27 | 显示全部楼层
FishC 发表于 2024-4-15 17:35
非常抱歉造成了误解。根据你提供的信息,我已经修改了代码以适应你所持有的《行政区划.xlsx》文件,其 ...

请问这报错是什么意思?
Traceback (most recent call last):
   line 1180, in on_city_changed
    if code.startswith(province_code) and code.startswith(city_code):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: startswith first arg must be str or a tuple of str, not NoneType
Traceback (most recent call last):
   line 1166, in on_province_changed
    if code.startswith(province_code) and code.endswith("00"):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: startswith first arg must be str or a tuple of str, not NoneType
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-17 21:41:48 | 显示全部楼层
凊风 发表于 2024-04-17 21:41
请问这报错是什么意思?
Traceback (most recent cal ...


这个错误意味着`startswith`函数的第一个参数必须是字符串或者字符串元组,而不能是`NoneType`类型。出现这个错误的原因可能是以下两种情况之一:

1. `self.combo_province.itemData(index)`返回了`None`值。这可能是因为你在加载数据时没有正确设置省级代码的数据。请确保在加载数据时,为每个省级的选项设置了正确的省级代码。

2. `province_code`或`city_code`的值不是一个字符串或者字符串元组。这可能是因为在加载数据时,没有逐行遍历Excel文件的每一行数据。请注意检查是否正确设置了`level`、`code`和`name`的值。

为了解决这个问题,你可以按照以下步骤进行检查:

1. 确保在加载数据时,将所有省级选项的代码设置为字符串类型,并将其存储在`itemData`中。

2. 确保在加载数据时,遍历Excel文件的每一行,并为每个级别的地区(省、市、县)设置正确的代码和名称。

修改后的代码示例如下:

  1. def load_data(self, excel_file):
  2.     wb = load_workbook(excel_file)
  3.     ws = wb.active

  4.     self.data_model = []

  5.     for row in ws.iter_rows(values_only=True):
  6.         level = row[0]
  7.         code = str(row[1])
  8.         name = row[2]

  9.         if level == 1:
  10.             self.data_model.append((code, name))
  11.         elif level == 2:
  12.             province_code = self.combo_province.itemData(self.combo_province.currentIndex())
  13.             if code.startswith(province_code):
  14.                 self.data_model.append((code, name))
  15.         elif level == 3:
  16.             province_code = self.combo_province.itemData(self.combo_province.currentIndex())
  17.             city_code = self.combo_city.itemData(self.combo_city.currentIndex())
  18.             
  19.             if province_code is not None and city_code is not None:
  20.                 if code.startswith(province_code) and code.startswith(city_code):
  21.                     self.data_model.append((code, name))
复制代码


请尝试修改代码,并再次运行程序。如果问题仍然存在,请检查数据加载的部分,确保设置了正确的省级代码和字符串类型的数据。如果还有任何问题,请随时向我提问。祝你好运!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-17 21:46:45 | 显示全部楼层
FishC 发表于 2024-4-17 21:41
这个错误意味着`startswith`函数的第一个参数必须是字符串或者字符串元组,而不能是`NoneType`类型。出 ...

报错:
Traceback (most recent call last):
  line 1089, in select_folder
    self.region_select(self.Region_file)
  line 1098, in region_select
    self.load_data(self.Region_file)
line 1128, in load_data
    if code.startswith(province_code):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: startswith first arg must be str or a tuple of str, not NoneType
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-17 21:47:06 | 显示全部楼层
凊风 发表于 2024-04-17 21:46
报错:
Traceback (most recent call last):
  line ...


这个错误意味着`startswith`函数的第一个参数必须是字符串或者字符串元组,而不能是`NoneType`类型。出现这个错误的原因可能是以下两种情况之一:1. `province_code`的值为`None`。这可能是因为在加载数据时没有正确设置省级代码的数据,导致`province_code`的值为空。请确保在加载数据时,为每个省级的选项设置了正确的省级代码。2. `code`的值不是一个字符串。这可能是因为在加载数据时,没有正确设置`code`的数据类型。为了解决这个问题,你可以按照以下步骤进行检查:1. 在数据加载之前,确保正确设置了`province_code`的值,并且该值不为空。可以通过打印输出`province_code`的值来检查。2. 在加载数据时,将`code`转换为字符串类型。可以使用`str()`函数来实现这一点,即`code = str(code)`。修改后的代码示例如下:def load_data(self, excel_file):    wb = load_workbook(excel_file)    ws = wb.active    self.data_model =     for row in ws.iter_rows(values_only=True):        level = row[0]        code = str(row[1])        name = row[2]        if level == 1:            self.data_model.append((code, name))        elif level == 2:            province_code = self.combo_province.itemData(self.combo_province.currentIndex())            if province_code is not None:                if code.startswith(province_code):                    self.data_model.append((code, name))        elif level == 3:            province_code = self.combo_province.itemData(self.combo_province.currentIndex())            city_code = self.combo_city.itemData(self.combo_city.currentIndex())                        if province_code is not None and city_code is not None:                if code.startswith(province_code) and code.startswith(city_code):                    self.data_model.append((code, name))请尝试修改代码,并再次运行程序。如果问题仍然存在,请检查数据加载的部分,确保设置了正确的省级代码和字符串类型的数据。如果还有任何问题,请随时向我提问。祝你好运!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-17 21:48:28 | 显示全部楼层
FishC 发表于 2024-4-17 21:47
这个错误意味着`startswith`函数的第一个参数必须是字符串或者字符串元组,而不能是`NoneType`类型。出 ...

回复请注意Python格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-17 21:48:43 | 显示全部楼层
凊风 发表于 2024-04-17 21:48
回复请注意Python格式


非常抱歉,给您带来困扰。以下是根据您的要求做出的Python代码修改:

  1. def load_data(self, excel_file):
  2.     wb = load_workbook(excel_file)
  3.     ws = wb.active
  4.     self.data_model = []
  5.     for row in ws.iter_rows(values_only=True):
  6.         level = row[0]
  7.         code = str(row[1])
  8.         name = row[2]
  9.         if level == 1:
  10.             self.data_model.append((code, name))
  11.         elif level == 2:
  12.             province_code = self.combo_province.itemData(self.combo_province.currentIndex())
  13.             if province_code is not None:
  14.                 if code.startswith(province_code):
  15.                     self.data_model.append((code, name))
  16.         elif level == 3:
  17.             province_code = self.combo_province.itemData(self.combo_province.currentIndex())
  18.             city_code = self.combo_city.itemData(self.combo_city.currentIndex())
  19.             if province_code is not None and city_code is not None:
  20.                 if code.startswith(province_code) and code.startswith(city_code):
  21.                     self.data_model.append((code, name))
复制代码


请尝试使用这个修改后的代码,并再次运行程序。如果问题仍然存在,请检查数据加载部分,确保设置了正确的省级代码和字符串类型的数据。如果还有任何问题,请随时向我提问。祝你好运!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-17 22:05:26 | 显示全部楼层
FishC 发表于 2024-4-15 17:35
非常抱歉造成了误解。根据你提供的信息,我已经修改了代码以适应你所持有的《行政区划.xlsx》文件,其 ...

这段代码中,哪行可以看到self.combo_province已经选了值,并且要把它存起来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-17 22:05:50 | 显示全部楼层
凊风 发表于 2024-04-17 22:05
这段代码中,哪行可以看到self.combo_province已经选 ...


在代码中,可以通过`self.combo_province.currentIndex()`获取当前已选中的省级选项的索引值。然后,可以使用`self.combo_province.itemData(index)`来获取与该索引对应的省级选项的数据值(即区划代码)。可以将该数据值存储在一个变量中以备后续使用。以下是修改后的代码示例:

  1. from PySide6.QtWidgets import QApplication, QMainWindow, QComboBox, QVBoxLayout, QWidget
  2. from openpyxl import load_workbook

  3. def create_cascading_combobox(excel_file):
  4.     class MainWindow(QMainWindow):
  5.         def __init__(self):
  6.             super().__init__()
  7.             self.setWindowTitle("行政区划")
  8.             
  9.             self.combo_province = QComboBox()
  10.             self.combo_city = QComboBox()
  11.             self.combo_county = QComboBox()

  12.             self.selected_province_code = ""  # 存储已选中省级选项的区划代码

  13.             layout = QVBoxLayout()
  14.             layout.addWidget(self.combo_province)
  15.             layout.addWidget(self.combo_city)
  16.             layout.addWidget(self.combo_county)

  17.             widget = QWidget()
  18.             widget.setLayout(layout)
  19.             self.setCentralWidget(widget)

  20.             self.load_data(excel_file)
  21.             self.init_comboboxes()

  22.             self.combo_province.currentIndexChanged.connect(self.on_province_changed)
  23.             self.combo_city.currentIndexChanged.connect(self.on_city_changed)

  24.         def load_data(self, excel_file):
  25.             wb = load_workbook(excel_file)
  26.             ws = wb.active

  27.             self.data_model = []

  28.             for row in ws.iter_rows(values_only=True):
  29.                 level = row[0]
  30.                 code = row[1]
  31.                 name = row[2]

  32.                 if level == 1:
  33.                     self.data_model.append((code, name))
  34.                 elif level == 2:
  35.                     self.data_model.append((code, name))
  36.                 elif level == 3:
  37.                     self.data_model.append((code, name))

  38.         def init_comboboxes(self):
  39.             self.combo_province.clear()
  40.             self.combo_city.clear()
  41.             self.combo_county.clear()

  42.             self.combo_province.addItem("请选择省级")

  43.             
  44.             for code, name in self.data_model:
  45.                 if code.endswith("0000"):
  46.                     self.combo_province.addItem(name, code)

  47.         def on_province_changed(self, index):
  48.             self.selected_province_code = self.combo_province.itemData(index)  # 存储已选中省级选项的区划代码

  49.             self.combo_city.clear()
  50.             self.combo_county.clear()

  51.             self.combo_city.addItem("请选择市级")
  52.             self.combo_county.addItem("请选择县级")

  53.         def on_city_changed(self, index):
  54.             self.combo_county.clear()

  55.             city_code = self.combo_city.itemData(index)

  56.             self.combo_county.addItem("请选择县级")

  57.         app = QApplication()
  58.         window = MainWindow()
  59.         window.show()
  60.         app.exec()

  61. create_cascading_combobox("行政区划.xlsx")
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-17 22:21:22 | 显示全部楼层
FishC 发表于 2024-4-17 22:05
在代码中,可以通过`self.combo_province.currentIndex()`获取当前已选中的省级选项的索引值。然后,可 ...

我看起来代码中好像没有self.combo_county.addItem("请选择县级")的选中及储存啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-17 22:21:51 | 显示全部楼层
凊风 发表于 2024-04-17 22:21
我看起来代码中好像没有self.combo_county.addItem(" ...


非常抱歉,我之前的回答有误。确实在代码中没有处理县级选项的选中和存储。以下是修改后的代码示例,它将存储已选中的县级选项的区划代码并在选中时进行更新:

  1. from PySide6.QtWidgets import QApplication, QMainWindow, QComboBox, QVBoxLayout, QWidget
  2. from openpyxl import load_workbook

  3. def create_cascading_combobox(excel_file):
  4.     class MainWindow(QMainWindow):
  5.         def __init__(self):
  6.             super().__init__()
  7.             self.setWindowTitle("行政区划")
  8.             
  9.             self.combo_province = QComboBox()
  10.             self.combo_city = QComboBox()
  11.             self.combo_county = QComboBox()
  12.             self.selected_province_code = ""  # 存储已选中省级选项的区划代码
  13.             self.selected_city_code = ""  # 存储已选中市级选项的区划代码
  14.             self.selected_county_code = ""  # 存储已选中县级选项的区划代码
  15.             
  16.             layout = QVBoxLayout()
  17.             layout.addWidget(self.combo_province)
  18.             layout.addWidget(self.combo_city)
  19.             layout.addWidget(self.combo_county)
  20.             widget = QWidget()
  21.             widget.setLayout(layout)
  22.             self.setCentralWidget(widget)
  23.             
  24.             self.load_data(excel_file)
  25.             self.init_comboboxes()
  26.             self.combo_province.currentIndexChanged.connect(self.on_province_changed)
  27.             self.combo_city.currentIndexChanged.connect(self.on_city_changed)
  28.             self.combo_county.currentIndexChanged.connect(self.on_county_changed)
  29.         
  30.         def load_data(self, excel_file):
  31.             wb = load_workbook(excel_file)
  32.             ws = wb.active
  33.             self.data_model = []
  34.             
  35.             for row in ws.iter_rows(values_only=True):
  36.                 level = row[0]
  37.                 code = row[1]
  38.                 name = row[2]
  39.                
  40.                 if level == 1:
  41.                     self.data_model.append((code, name))
  42.                 elif level == 2:
  43.                     self.data_model.append((code, name))
  44.                 elif level == 3:
  45.                     self.data_model.append((code, name))
  46.         
  47.         def init_comboboxes(self):
  48.             self.combo_province.clear()
  49.             self.combo_city.clear()
  50.             self.combo_county.clear()
  51.             
  52.             self.combo_province.addItem("请选择省级")
  53.             
  54.             for code, name in self.data_model:
  55.                 if code.endswith("0000"):
  56.                     self.combo_province.addItem(name, code)
  57.         
  58.         def on_province_changed(self, index):
  59.             self.selected_province_code = self.combo_province.itemData(index)  # 存储已选中省级选项的区划代码
  60.             
  61.             # 清除之前选择的市级和县级选项
  62.             self.combo_city.clear()
  63.             self.combo_county.clear()
  64.             
  65.             self.combo_city.addItem("请选择市级")
  66.             self.combo_county.addItem("请选择县级")
  67.         
  68.         def on_city_changed(self, index):
  69.             self.selected_city_code = self.combo_city.itemData(index)  # 存储已选中市级选项的区划代码
  70.             
  71.             # 清除之前选择的县级选项
  72.             self.combo_county.clear()
  73.             self.combo_county.addItem("请选择县级")
  74.         
  75.         def on_county_changed(self, index):
  76.             self.selected_county_code = self.combo_county.itemData(index)  # 存储已选中县级选项的区划代码
  77.         
  78.     app = QApplication()
  79.     window = MainWindow()
  80.     window.show()
  81.     app.exec()

  82. create_cascading_combobox("行政区划.xlsx")
复制代码


这样,当选择县级选项时,`self.selected_county_code`变量中就会存储相应的区划代码。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-17 22:27:08 | 显示全部楼层
FishC 发表于 2024-4-17 22:21
非常抱歉,我之前的回答有误。确实在代码中没有处理县级选项的选中和存储。以下是修改后的代码示例,它 ...

可能我没表达清楚,我需要储存的是与所选中代码对应的“名称”。。。

如省名

市 名

县名。

不存储代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-17 22:27:33 | 显示全部楼层
凊风 发表于 2024-04-17 22:27
可能我没表达清楚,我需要储存的是与所选中代码对应的 ...


非常抱歉,我理解错了你的需求。以下是修改后的代码示例,它会存储所选省、市、县的名称:from PySide6.QtWidgets import QApplication, QMainWindow, QComboBox, QVBoxLayout, QWidgetfrom openpyxl import load_workbookdef create_cascading_combobox(excel_file):    class MainWindow(QMainWindow):        def __init__(self):            super().__init__()            self.setWindowTitle("行政区划")                        self.combo_province = QComboBox()            self.combo_city = QComboBox()            self.combo_county = QComboBox()            self.selected_province_name = ""  # 存储已选中省级选项的名称            self.selected_city_name = ""  # 存储已选中市级选项的名称            self.selected_county_name = ""  # 存储已选中县级选项的名称                        layout = QVBoxLayout()            layout.addWidget(self.combo_province)            layout.addWidget(self.combo_city)            layout.addWidget(self.combo_county)            widget = QWidget()            widget.setLayout(layout)            self.setCentralWidget(widget)                        self.load_data(excel_file)            self.init_comboboxes()            self.combo_province.currentIndexChanged.connect(self.on_province_changed)            self.combo_city.currentIndexChanged.connect(self.on_city_changed)            self.combo_county.currentIndexChanged.connect(self.on_county_changed)                def load_data(self, excel_file):            wb = load_workbook(excel_file)            ws = wb.active            self.data_model = []            for row in ws.iter_rows(values_only=True):                level, code, name = row                                if level == 1:                    self.data_model.append((code, name))                elif level == 2:                    self.data_model.append((code, name))                elif level == 3:                    self.data_model.append((code, name))                def init_comboboxes(self):            self.combo_province.clear()            self.combo_city.clear()            self.combo_county.clear()                        self.combo_province.addItem("请选择省级")            for _, name in self.data_model:                self.combo_province.addItem(name)                def on_province_changed(self, index):            self.selected_province_name = self.combo_province.itemText(index)  # 存储已选中省级选项的名称                        # 清除之前选择的市级和县级选项            self.combo_city.clear()            self.combo_county.clear()                        self.combo_city.addItem("请选择市级")            self.combo_county.addItem("请选择县级")                def on_city_changed(self, index):            self.selected_city_name = self.combo_city.itemText(index)  # 存储已选中市级选项的名称                        # 清除之前选择的县级选项            self.combo_county.clear()            self.combo_county.addItem("请选择县级")                def on_county_changed(self, index):            self.selected_county_name = self.combo_county.itemText(index)  # 存储已选中县级选项的名称            app = QApplication()    window = MainWindow()    window.show()    app.exec()create_cascading_combobox("行政区划.xlsx")现在,当选择省、市、县选项时,`self.selected_province_name`、`self.selected_city_name` 和 `self.selected_county_name` 变量中分别储存了对应的名称。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-17 22:29:00 | 显示全部楼层
FishC 发表于 2024-4-17 22:27
非常抱歉,我理解错了你的需求。以下是修改后的代码示例,它会存储所选省、市、县的名称:from PySide6 ...

回复请注意Python格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-17 22:29:25 | 显示全部楼层
凊风 发表于 2024-04-17 22:29
回复请注意Python格式


非常抱歉,以下是修改后的代码示例,它会存储所选省、市、县的名称:

  1. from PySide6.QtWidgets import QApplication, QMainWindow, QComboBox, QVBoxLayout, QWidget
  2. from openpyxl import load_workbook

  3. def create_cascading_combobox(excel_file):
  4.     class MainWindow(QMainWindow):
  5.         def __init__(self):
  6.             super().__init__()
  7.             self.setWindowTitle("行政区划")
  8.             
  9.             self.combo_province = QComboBox()
  10.             self.combo_city = QComboBox()
  11.             self.combo_county = QComboBox()
  12.             
  13.             self.selected_province_name = ""  # 存储已选中省级选项的名称
  14.             self.selected_city_name = ""  # 存储已选中市级选项的名称
  15.             self.selected_county_name = ""  # 存储已选中县级选项的名称
  16.             
  17.             layout = QVBoxLayout()
  18.             layout.addWidget(self.combo_province)
  19.             layout.addWidget(self.combo_city)
  20.             layout.addWidget(self.combo_county)
  21.             widget = QWidget()
  22.             widget.setLayout(layout)
  23.             self.setCentralWidget(widget)
  24.             
  25.             self.load_data(excel_file)
  26.             self.init_comboboxes()
  27.             self.combo_province.currentIndexChanged.connect(self.on_province_changed)
  28.             self.combo_city.currentIndexChanged.connect(self.on_city_changed)
  29.             self.combo_county.currentIndexChanged.connect(self.on_county_changed)
  30.         
  31.         def load_data(self, excel_file):
  32.             wb = load_workbook(excel_file)
  33.             ws = wb.active
  34.             self.data_model = []
  35.             
  36.             for row in ws.iter_rows(values_only=True):
  37.                 level, code, name = row
  38.                
  39.                 if level == 1:
  40.                     self.data_model.append((code, name))
  41.                 elif level == 2:
  42.                     self.data_model.append((code, name))
  43.                 elif level == 3:
  44.                     self.data_model.append((code, name))
  45.         
  46.         def init_comboboxes(self):
  47.             self.combo_province.clear()
  48.             self.combo_city.clear()
  49.             self.combo_county.clear()
  50.             
  51.             self.combo_province.addItem("请选择省级")
  52.             for _, name in self.data_model:
  53.                 self.combo_province.addItem(name)
  54.             
  55.         def on_province_changed(self, index):
  56.             self.selected_province_name = self.combo_province.itemText(index)  # 存储已选中省级选项的名称
  57.             
  58.             # 清除之前选择的市级和县级选项
  59.             self.combo_city.clear()
  60.             self.combo_county.clear()
  61.             
  62.             self.combo_city.addItem("请选择市级")
  63.             self.combo_county.addItem("请选择县级")
  64.         
  65.         def on_city_changed(self, index):
  66.             self.selected_city_name = self.combo_city.itemText(index)  # 存储已选中市级选项的名称
  67.             
  68.             # 清除之前选择的县级选项
  69.             self.combo_county.clear()
  70.             self.combo_county.addItem("请选择县级")
  71.         
  72.         def on_county_changed(self, index):
  73.             self.selected_county_name = self.combo_county.itemText(index)  # 存储已选中县级选项的名称
  74.    
  75.     app = QApplication()
  76.     window = MainWindow()
  77.     window.show()
  78.     app.exec()

  79. create_cascading_combobox("行政区划.xlsx")
复制代码


现在,当选择省、市、县选项时,`self.selected_province_name`、`self.selected_city_name` 和 `self.selected_county_name` 变量中分别储存了对应的名称。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-17 22:31:16 | 显示全部楼层
FishC 发表于 2024-4-17 22:29
非常抱歉,以下是修改后的代码示例,它会存储所选省、市、县的名称:

如果已经储存了代码,用哪个命令可以把代码所对应的名称取出来呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-17 22:31:31 | 显示全部楼层
凊风 发表于 2024-04-17 22:31
如果已经储存了代码,用哪个命令可以把代码所对应的名 ...


如果你已经储存了代码,并且想要获取该代码所对应的名称,可以使用`__name__`变量来获取。`__name__`是Python中的一个特殊变量,表示当前模块的名称。在交互式命令行中执行代码时,`__name__`会被设置为`__main__`,而在作为模块被导入时,`__name__`会被设置为模块的名称。

以下是一个示例:

  1. def my_function():
  2.     print(__name__)

  3. print("函数的名称:", my_function.__name__)
  4. my_function()
复制代码


运行这段代码,你将会得到如下输出:

  1. 函数的名称: my_function
  2. my_function
复制代码


你可以使用`__name__`来获取函数、类或模块的名称,以便于进一步处理或显示。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-17 22:32:52 | 显示全部楼层
FishC 发表于 2024-4-17 22:21
非常抱歉,我之前的回答有误。确实在代码中没有处理县级选项的选中和存储。以下是修改后的代码示例,它 ...

在这段代码中,如果已经储存了代码,用哪个命令可以把与代码对应的名称取出来呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-17 22:33:08 | 显示全部楼层
凊风 发表于 2024-04-17 22:32
在这段代码中,如果已经储存了代码,用哪个命令可以把 ...


在代码中已经存储了区划代码,如果要根据区划代码获取对应的名称,你可以使用以下方法:1. 创建一个字典,将区划代码作为键,对应的名称作为值。例如:code_to_name = {    "110000": "北京市",    "120000": "天津市",    ...}2. 使用存储的区划代码作为键来查找对应的名称。例如,如果你已经存储了一个省级的区划代码`selected_province_code`,可以使用以下代码来获取对应的省级名称:province_name = code_to_name.get(selected_province_code)如果`selected_province_code`存在于`code_to_name`字典的键中,那么`province_name`就会得到对应的省级名称。如果不存在,`province_name`将会是`None`。同样的方法可以用于获取市级和县级名称。希望这能够帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-21 07:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表