不显示开始时间,不显示耗时,根据起始时间和速度得到剩余时间的问题,如何解决?

希望可以不显示开始时间,不显示耗时,根据起始时间和速度得到剩余时间。(希望得到代码)

    def refresh_time(self):
        time1=datetime.datetime.now()
        temp=self.startTime.text()
        temp2=temp[5:]
        temp3=datetime.datetime.strptime(temp2, "%Y-%m-%d %H:%M:%S")
        hour1=time1.hour-temp3.hour
        minute1 = time1.minute - temp3.minute
        second1=time1.second-temp3.second
        if minute1<0:
            hour1 =hour1 -1
            minute1 = minute1*(-1)
        if second1 < 0:
            minute1 =minute1-1
            second1 = second1 * (-1)
        self.haoshi.setText(str(hour1)+"时"+str(minute1)+"分"+str(second1)+"秒")
      
  def refresh_patient_info(self,data):
        print("-------")
        print(data)
        if len(data) >0 :
            self.num_bed.setText(data[0][1])
            self.startTime.setText("开始时间:"+str(data[0][5]))
           self.disu.setText(str(data[0][2])+'d/min')
 

将标签设置为不显示就好了,修改标签的显示位置为(0,0,0,0)

参考GPT和自己的思路:

根据你提供的代码,我的理解是你想在界面中实时显示剩余时间,而不显示开始时间和耗时。你可以根据起始时间和速度来计算剩余时间并将其显示在界面上。以下是代码示例:

import datetime

# 获取当前时间
now = datetime.datetime.now()

# 计算剩余时间
start_time = datetime.datetime.strptime("2022-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")  # 设置起始时间
speed = 10  # 设置速度,表示每分钟完成的进度数量
delta = datetime.timedelta(minutes=(now - start_time).total_seconds() / 60)  # 计算已经过去的时间
remaining_time = datetime.timedelta(minutes=(24*60) - delta.total_seconds() / 60)  # 计算剩余时间,24*60表示一天的分钟数,可以根据实际情况修改

# 格式化并显示剩余时间
remaining_time_str = str(remaining_time).split(".")[0]  # 将剩余时间转为字符串,并去掉小数部分
print("剩余时间:" + remaining_time_str)  # 在控制台打印出剩余时间

在上面的示例代码中,我们首先获取了当前时间now,然后计算了已经过去的时间delta。接着我们根据起始时间和速度计算了剩余时间remaining_time。最后将剩余时间转为字符串并去掉小数部分,就可以在界面上实时显示剩余时间了。你可以根据需求将代码放在refresh_time函数或refresh_patient_info函数中。

参考GPT和自己的思路:

根据你提供的代码,可以看出你希望根据起始时间和速度来计算剩余时间,并且不希望显示开始时间和耗时。下面是一个可能的解决方案:

def refresh_time(self):
    # 获取当前时间
    time_now = datetime.datetime.now()
    # 获取起始时间
    start_time = self.startTime.text()[5:]
    start_time_obj = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
    # 计算时间差
    time_delta = time_now - start_time_obj
    # 计算剩余时间
    speed = float(self.disu.text().replace('d/min', ''))
    remaining_seconds = (3600 / speed) * 24 - time_delta.seconds
    # 更新剩余时间
    remaining_hours = remaining_seconds // 3600
    remaining_minutes = (remaining_seconds % 3600) // 60
    remaining_seconds = remaining_seconds % 60
    self.haoshi.setText(str(int(remaining_hours)) + "时" + str(int(remaining_minutes)) + "分" + str(int(remaining_seconds)) + "秒")

def refresh_patient_info(self, data):
    if len(data) > 0:
        self.num_bed.setText(data[0][1])
        # 不显示开始时间
        self.startTime.setText('')
        self.disu.setText(str(data[0][2]) + 'd/min')

这个代码中,refresh_time函数根据当前时间和起始时间计算时间差,然后根据速度计算剩余时间,并且更新剩余时间的显示。另外,refresh_patient_info函数把开始时间的显示设置为空,从而实现不显示开始时间的效果。

该回答引用GPTᴼᴾᴱᴺᴬᴵ
根据起始时间和速度计算剩余时间可以通过以下代码实现:

import datetime

def remaining_time(start_time, speed):
    current_time = datetime.datetime.now()
    start_time = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
    time_diff = (current_time - start_time).total_seconds()
    remaining_seconds = (60/speed) * 60 * 24 - time_diff
    if remaining_seconds < 0:
        return "已结束"
    remaining_time = datetime.timedelta(seconds=remaining_seconds)
    return str(remaining_time)

# Example usage
start_time = "2022-03-20 10:00:00"
speed = 10 # disu value in d/min
remaining = remaining_time(start_time, speed)
print("剩余时间:", remaining)

这里的 remaining_time() 函数接受两个参数,分别是起始时间和速度(d/min),并返回一个字符串表示剩余时间。首先将起始时间转换为 datetime 对象,计算当前时间与起始时间之间的时间差,再根据速度计算出总共需要的时间,减去已过去的时间即可得到剩余时间。如果剩余时间小于零则返回字符串 "已结束"。

如果不需要显示开始时间和耗时,只需要在 GUI 代码中调用 remaining_time() 函数并将返回值设置为需要显示的文本即可。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632