鱼C论坛

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

[已解决]资产管理系统求教~~

  [复制链接]
 楼主| 发表于 2024-5-29 09:17:34 | 显示全部楼层
FishC 发表于 2024-5-29 09:15
你遇到的问题是由于编码方式不同导致的。转换后的文本为Unicode转义字符,而不是实际的中文汉字。

...

我是用PyCharm的外部工具$FileName$ -o $FileNameWithoutExtension$.py来转换的,请问有能直接转换为汉字的命令吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 09:17:44 | 显示全部楼层
凊风 发表于 2024-05-29 09:17
我是用PyCharm的外部工具$FileName$ -o $FileNameWith ...


是的,你可以使用`pyuic6`命令来直接将.ui文件转换为.py文件,并指定输出文件的编码方式为utf-8。具体的命令行如下所示:
pyuic6 -o output_file.py -x input_file.ui

在这个命令中,`output_file.py`是输出的.py文件名,`input_file.ui`是输入的.ui文件名。使用`-x`选项指定输出文件的编码方式为utf-8。

请确保你已经正确安装了PySide6,并且在命令行中能够找到`pyuic6`命令。如果没有找到,你可能需要将PySide6的安装路径添加到系统的环境变量中。

希望这能帮到你!

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

使用道具 举报

 楼主| 发表于 2024-5-29 09:23:20 | 显示全部楼层
FishC 发表于 2024-5-29 09:17
是的,你可以使用`pyuic6`命令来直接将.ui文件转换为.py文件,并指定输出文件的编码方式为utf-8。具体 ...

我的意思是:我现在PyCharm中外部工具的命令行是这样的:$FileName$ -o $FileNameWithoutExtension$.py,

但是Ui转换成Py后,汉字不能正常显示。

请问如何写PyCharm中外部工具的命令行才能保证Ui转换成Py后,汉字能够正常显示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 09:23:29 | 显示全部楼层
凊风 发表于 2024-05-29 09:23
我的意思是:我现在PyCharm中外部工具的命令行是这样 ...


非常抱歉之前的回答可能让你产生了误解。

在PyCharm中使用外部工具执行命令行转换时,默认使用的是系统默认编码,而不是UTF-8。因此,你可以通过设置外部工具的环境变量来指定转换编码为UTF-8,以保证汉字能够正确显示。

1. 打开PyCharm,在菜单栏中选择“Preferences”(或者“Settings”)。
2. 在弹出的窗口中,选择“Tools” > “External Tools”。
3. 点击右上角的“+”按钮,添加一个新的外部工具。
4. 在“Name”字段中填写一个描述性名称,比如“UI to Py UTF-8”。
5. 在“Program”字段中填写`pyuic6`,这是将.ui文件转换为.py文件的命令行工具。
6. 在“Arguments”字段中填写`-o $FileNameWithoutExtension$.py $FileName$`,这是命令行工具的参数。
7. 在“Working directory”字段中选择`$FileDir$`,这将设置工作目录为当前文件所在的目录。
8. 在“Environment variables”字段中点击“+”按钮,添加一个新的环境变量。
9. 在“Name”字段中填写`PYTHONIOENCODING`,在“Value”字段中填写`utf-8`。
10. 保存设置并关闭窗口。

现在,你可以右键点击.ui文件,在菜单中选择“External Tools” > “UI to Py UTF-8”,它将使用指定的命令行工具进行转换,并确保汉字正常显示。

希望这能解决你的问题!

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

使用道具 举报

 楼主| 发表于 2024-5-29 09:29:32 | 显示全部楼层
FishC 发表于 2024-5-29 09:23
非常抱歉之前的回答可能让你产生了误解。

在PyCharm中使用外部工具执行命令行转换时,默认使用的是 ...

我使用的是PyCharm 2023.3.5 (Community Edition)版本,并且安装了中文字体,你所说的

8. 在“Environment variables”字段中点击“+”按钮,添加一个新的环境变量。
9. 在“Name”字段中填写`PYTHONIOENCODING`,在“Value”字段中填写`utf-8`。

我没找到啊....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 09:29:39 | 显示全部楼层
凊风 发表于 2024-05-29 09:29
我使用的是PyCharm 2023.3.5 (Community Edition)版本 ...


非常抱歉之前的回答可能存在误导。实际上,PyCharm中并没有提供直接设置转换命令输出编码方式的选项。

要解决汉字无法正常显示的问题,你可以尝试在转换后的.py文件中手动添加编码声明,即在代码开头添加如下一行代码:
# -*- coding: utf-8 -*-

这样做可以告诉Python解释器该文件是以utf-8编码保存的,可以正确解析其中的汉字字符。

另外,如果你在PyCharm中看到了乱码,可以尝试修改PyCharm的显示编码设置。你可以点击菜单栏上的"File" -> "Settings"打开设置窗口,然后选择"Editor" -> "File Encodings"。在"IDE Encoding"和"Project Encoding"中选择使用utf-8编码,如果已经选择了utf-8,可以尝试切换到其他编码再切换回utf-8,然后点击应用和确定按钮保存设置。

希望这些能帮助解决你遇到的问题。如有进一步疑问,请随时追问。

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

使用道具 举报

 楼主| 发表于 2024-5-29 16:48:29 | 显示全部楼层
FishC 发表于 2024-5-29 09:29
非常抱歉之前的回答可能存在误导。实际上,PyCharm中并没有提供直接设置转换命令输出编码方式的选项。
...

请问这报错是啥意思:
Traceback (most recent call last):
   line 1721, in HR_system_confirm
    self.open_window_e()
   line 1730, in open_window_e
    self.scroll_window = HR_Window()
                         ^^^^^^^^^^^
   line 2054, in __init__
    sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
                 ^^^^^^^^^^^
NameError: name 'QSizePolicy' is not defined. Did you mean: 'sizePolicy'?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 16:48:49 | 显示全部楼层
凊风 发表于 2024-05-29 16:48
请问这报错是啥意思:
Traceback (most recent call  ...


这个报错意味着在你的代码中使用了一个未定义的名称`QSizePolicy`,并且它可能是拼写错误。报错提示中还提示了一个可能的替代名称`sizePolicy`。

根据这个报错提示,你可以尝试将代码中的`QSizePolicy`改为`sizePolicy`,看看问题是否解决。如果问题仍然存在,那么可能是你忘记导入`QSizePolicy`所在的模块。你需要确保代码中包含了正确的模块导入语句。例如,对于PySide6,在使用`QSizePolicy`之前,你需要在开头添加以下导入语句:
from PySide6.QtWidgets import QSizePolicy

请注意,这只是一种猜测,具体解决方法还要根据你的代码和环境来确定。如果问题仍然存在,请提供更多的代码细节以便我们更好地帮助你解决问题。

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

使用道具 举报

 楼主| 发表于 2024-5-30 11:10:59 | 显示全部楼层
FishC 发表于 2024-5-29 16:48
这个报错意味着在你的代码中使用了一个未定义的名称`QSizePolicy`,并且它可能是拼写错误。报错提示中 ...

请问pyside6 designer中用于展示一寸照片的QLable应该设置为多大?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-30 11:11:20 | 显示全部楼层
凊风 发表于 2024-05-30 11:10
请问pyside6 designer中用于展示一寸照片的QLable应该 ...


在PySide6中,可以使用QLabel来展示照片。要设置QLabel的大小,可以使用`setFixedSize`方法来指定宽度和高度。

对于一寸照片(25.4毫米 x 38.1毫米),可以将QLabel的大小设置为相应的像素值。由于屏幕分辨率的不同,我们可以选择适当的像素密度,比如300像素/英寸。

假设你的一寸照片的像素密度为300像素/英寸,那么宽度和高度可以按以下方式计算:
# 导入必要的库
from PySide6.QtWidgets import QApplication, QLabel
from PySide6.QtGui import QPixmap

# 创建应用程序对象
app = QApplication([])

# 创建QLabel并设置图片
label = QLabel()
pixmap = QPixmap("photo.jpg")  # 假设你的照片文件名为photo.jpg
label.setPixmap(pixmap)

# 设置QLabel的大小(以像素为单位)
width_mm = 25.4  # 一寸照片的宽度(毫米)
height_mm = 38.1  # 一寸照片的高度(毫米)
dpi = 300  # 像素密度(像素/英寸)

width_px = int(width_mm * dpi / 25.4)
height_px = int(height_mm * dpi / 25.4)
label.setFixedSize(width_px, height_px)

# 显示QLabel
label.show()

# 运行应用程序
app.exec()

根据你的具体需求和屏幕分辨率,你可以调整像素密度和照片的大小来适应你的界面。

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

使用道具 举报

 楼主| 发表于 2024-5-30 11:17:09 | 显示全部楼层
FishC 发表于 2024-5-30 11:11
在PySide6中,可以使用QLabel来展示照片。要设置QLabel的大小,可以使用`setFixedSize`方法来指定宽度 ...

窗体为1440*900,麻烦你直接告诉我如果要在右上角设置一个QLable来显示1寸照片,这个QLable应该设置的长、宽各是多少, 现在是[(1235,65),191*191]。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-30 11:17:25 | 显示全部楼层
凊风 发表于 2024-05-30 11:17
窗体为1440*900,麻烦你直接告诉我如果要在右上角设置 ...


如果你要在右上角设置一个QLable来显示1寸照片,可以考虑以下方式来设置QLable的长和宽:

首先,确定1寸照片的尺寸。一般情况下,1寸照片的尺寸约为25.4mm × 35.6mm。

然后,将这个尺寸转换为像素。假设你的屏幕分辨率为1440x900,那么可以按比例计算出1寸照片在这个屏幕上的像素尺寸。
# 屏幕分辨率
screen_width = 1440
screen_height = 900

# 1寸照片尺寸(mm)
photo_width_mm = 25.4
photo_height_mm = 35.6

# 像素尺寸
photo_width_px = int(screen_width * (photo_width_mm / 25.4))
photo_height_px = int(screen_height * (photo_height_mm / 25.4))

最后,将计算得到的像素尺寸应用到QLable上:
label = QLabel()
label.setFixedSize(photo_width_px, photo_height_px)

这样,你就可以在右上角设置一个固定尺寸为1寸照片像素的QLable来显示照片了。

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

使用道具 举报

 楼主| 发表于 2024-5-30 16:58:03 | 显示全部楼层
FishC 发表于 2024-5-30 11:17
如果你要在右上角设置一个QLable来显示1寸照片,可以考虑以下方式来设置QLable的长和宽:

首先,确 ...

为什么宽和高都除以25.4?
# 像素尺寸
photo_width_px = int(screen_width * (photo_width_mm / 25.4))
photo_height_px = int(screen_height * (photo_height_mm / 25.4))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-30 16:58:27 | 显示全部楼层
凊风 发表于 2024-05-30 16:58
为什么宽和高都除以25.4?
# 像素尺寸
photo_width_ ...


非常抱歉,我之前的回答有误导之嫌。将像素值除以 25.4 是为了将毫米单位转换为英寸单位,而不是将英寸转换为毫米。在这个情况下,我们不需要进行单位转换。

如果你要在固定尺寸屏幕上显示一个1寸照片,可以直接使用照片的像素尺寸,并将其设置为QLabel的宽度和高度。

例如,假设1寸照片的像素尺寸为300x300像素:
photo_width_px = 300
photo_height_px = 300

然后,根据你之前提到的窗体大小为1440x900像素,在右上角设置QLabel时,将其位置调整为 `(window_width - photo_width_px, 0)`,即横坐标为窗体宽度减去照片宽度,纵坐标为0。

希望这次能够解答你的问题。非常抱歉给你带来困惑。

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

使用道具 举报

 楼主| 发表于 2024-5-30 17:02:37 | 显示全部楼层
FishC 发表于 2024-5-30 16:58
非常抱歉,我之前的回答有误导之嫌。将像素值除以 25.4 是为了将毫米单位转换为英寸单位,而不是将英寸 ...

QLable大小定为300*300在1440*900的屏幕上感觉好大,有点不协调的样子。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-30 17:02:47 | 显示全部楼层
凊风 发表于 2024-05-30 17:02
QLable大小定为300*300在1440*900的屏幕上感觉好大, ...


如果在1440*900的屏幕上,将一个QLable的大小设置为300*300像素,确实会显得相对较大,并可能导致不协调的样子。根据窗体的大小和显示效果,可以考虑调整QLable的大小来获得更好的视觉效果。

你可以根据个人需求和外观要求,适当调整QLable的尺寸。例如,你可以将宽度减小到200或150像素,再根据比例将高度相应调整,以使其更符合整体设计。

另外,也可以考虑使用其他控件(例如QPixmap、QImage),通过缩放等方式来展示1寸照片,以更好地适应屏幕大小。

最终的调整应根据你的具体需求和美观感受进行,希望这些建议能对你有所帮助。

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

使用道具 举报

 楼主| 发表于 2024-6-19 12:48:03 | 显示全部楼层
FishC 发表于 2024-5-30 17:02
如果在1440*900的屏幕上,将一个QLable的大小设置为300*300像素,确实会显得相对较大,并可能导致不协 ...

现有                    for index, row in comboBox5_data.iterrows():
                        name = row['名称']
                        code = row['区划代码']
                        self.comboBox_5.addItem(name, code)

selected_name = self.comboBox_5.itemText(index)

请问如何把与selected_name对应的code取出来?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-19 14:24:36 | 显示全部楼层
FishC 发表于 2024-5-30 16:58
非常抱歉,我之前的回答有误导之嫌。将像素值除以 25.4 是为了将毫米单位转换为英寸单位,而不是将英寸 ...

现有                    for index, row in comboBox5_data.iterrows():
                        name = row['名称']
                        code = row['区划代码']
                        self.comboBox_5.addItem(name, code)

selected_name = self.comboBox_5.itemText(index)

请问如何把与selected_name对应的code取出来?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-6-19 14:24:52 | 显示全部楼层
凊风 发表于 2024-06-19 14:24
现有                    for index, row in comboBox ...


当你创建一个 `QComboBox` 时,你可以使用 `addItem` 方法为每个项设置显示文本和附加的数据。您已经通过调用 `addItem(name, code)` 将 `name` 显示在 `comboBox` 中,将 `code` 作为附加数据存储。

为了获取与选定 `name` 对应的 `code`,你可以使用 `QComboBox` 的 `itemData` 方法。以下是一个示例代码:
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QComboBox, QPushButton

class ComboBoxExample(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('ComboBox 示例')

        layout = QVBoxLayout()

        self.comboBox_5 = QComboBox()
        self.load_data()
        layout.addWidget(self.comboBox_5)

        btn_get_code = QPushButton('获取选定项的代码')
        btn_get_code.clicked.connect(self.get_selected_code)
        layout.addWidget(btn_get_code)

        self.setLayout(layout)

    def load_data(self):
        # 假设 comboBox5_data 是包含两列 'name' 和 'code' 的 DataFrame
        comboBox5_data = [
            {"name": "选项1", "code": "001"},
            {"name": "选项2", "code": "002"},
            {"name": "选项3", "code": "003"}
        ]

        for index, row in enumerate(comboBox5_data):
            name = row["name"]
            code = row["code"]
            self.comboBox_5.addItem(name, code)

    def get_selected_code(self):
        selected_index = self.comboBox_5.currentIndex()
        selected_name = self.comboBox_5.itemText(selected_index)
        selected_code = self.comboBox_5.itemData(selected_index)
        print(f"选定项: {selected_name}, 代码: {selected_code}")

if __name__ == '__main__':
    app = QApplication([])
    window = ComboBoxExample()
    window.show()
    app.exec()

在这个例子中,`load_data` 方法模拟读取数据,并将每行数据添加到 `QComboBox` 中。在 `get_selected_code` 方法中,我们首先获取当前选择项的索引,然后使用 `itemText` 获取选定项的显示文本,使用 `itemData` 获取附加的数据(即对应的 `code`)。

你可以运行这个示例来验证代码的功能,希望这能帮助到你!

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

使用道具 举报

 楼主| 发表于 2024-6-19 21:41:27 | 显示全部楼层
FishC 发表于 2024-6-19 14:24
当你创建一个 `QComboBox` 时,你可以使用 `addItem` 方法为每个项设置显示文本和附加的数据。您已经通 ...

现有self.Region_Select = ['A', 'B', 'C', 'D', 'E'],

        if self.Region_Code == 1:
           要求 Region_Select = AE
        elif self.Region_Code == 2:
            要求 Region_Select = ABCE
        elif self.Region_Code == 3:
            要求 Region_Select = ABCDE

请问要如何 实现?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 00:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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