中断无限while循环(无响应gui)

2024-09-27 21:32:12 发布

您现在位置:Python中文网/ 问答频道 /正文

解决了Qthread worker类的问题。 https://realpython.com/python-pyqt-qthread/ 帮了我很多忙

我有一个从目录读取和打开数据的循环,但当我运行代码时,python没有响应。我可以看到文件正在终端中打开,但python没有响应。我认为这是关于无限循环的,但我不知道如何打破它。(也尝试了“for循环”)

注:

  1. self.fileindex保持选定文件在内存目录中的顺序
  2. self.Vfilelist.value将内存中目录中的文件名保留为列表
  3. self.Vradar.change更改画布中的绘图
  4. start_流线被分配给带有Qt的按钮
    def start_stream(self):
        filelist = self.Vfilelist.value
        f = (len(filelist) - 10)

        while (f < (len(filelist))):

            self.filename = self.Vfilelist.value[f]
            f = f + 1
            print(f)
            time.sleep(1)

            while (self.filename in self.Vfilelist.value):
                
                print("Opening file " + self.filename, file=log.info)
                filename = self.filename
                radar = pyart.io.read(filename)
                # Add the filename for Display
                radar.filename = filename
                self.Vradar.change(radar)
                break

            if f == (len(filelist)):
                f = (len(filelist) - 10)

输出:

Opening file C:/Users/PC/product_raw\IZM201225092922.KATX8C4

807

Opening file C:/Users/PC/product_raw\IZM201225092943.KATX8C5

808

Opening file C:/Users/PC/product_raw\IZM201225093004.KATX8C6

809

Opening file C:/Users/PC/product_raw\IZM201225093025.KATX8C7

810

Opening file C:/Users/PC/product_raw\IZM201225093048.KATX8C9

811

Opening file C:/Users/PC/product_raw\IZM201225093107.KATX8CA

812

Opening file C:/Users/PC/product_raw\IZM201225093128.KATX8CB

813

Opening file C:/Users/PC/product_raw\IZM201225093149.KATX8CC

814

Opening file C:/Users/PC/product_raw\IZM201225093210.KATX8CD

815

Opening file C:/Users/PC/product_raw\IZM201225093232.KATX8CE

816

Opening file C:/Users/PC/product_raw\IZM201225092922.KATX8C4

807

Opening file C:/Users/PC/product_raw\IZM201225092943.KATX8C5

808

Opening file C:/Users/PC/product_raw\IZM201225093004.KATX8C6

.

.

.

Tags: self目录rawlenvalueproductfilenameusers
1条回答
网友
1楼 · 发布于 2024-09-27 21:32:12

如果没有可运行的代码,我猜您真的想这样做:

def start_stream(self):
    filelist = self.Vfilelist.value
    files_wanted = filelist[-10:]
    
    for filename in files_wanted:
        print("Opening file " + self.filename, file=log.info)
        radar = pyart.io.read(filename)
        # Add the filename for Display
        radar.filename = filename
        self.Vradar.change(radar)

它不一定会解决任何线程问题,但它有助于使您试图做的事情更清楚

相关问题 更多 >

    热门问题