Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt for Python
  4. For loop problem!
Forum Updated to NodeBB v4.3 + New Features

For loop problem!

Scheduled Pinned Locked Moved Solved Qt for Python
15 Posts 2 Posters 2.2k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • monamourM monamour

    Dear All,

    The PROCESS function below, I have "For loop". The first if statement is working fine but the second if statement is not execute at all. It has been changed in so many ways with no success.

    Any ideas,

    Many thanks,

    def Buttons(self):
            self.press_4.clicked.connect(self.Process)
    
    
    def Process(self):
            for proc in psutil.process_iter():
                x=self.lineEdit.text()
                x2= "<font color='#00ff00'> "+x+"</font>"
                if proc.name() not in x:
                    QMessageBox.information(self,"Error",'Blank!')
                    return
    
                if proc.name()  in x:
                    proc.kill()
                    QMessageBox.information(self, "Success", x2 +"has been terminated"
                    return
    
    jsulmJ Offline
    jsulmJ Offline
    jsulm
    Lifetime Qt Champion
    wrote on last edited by
    #2

    @monamour I only see one loop

    https://forum.qt.io/topic/113070/qt-code-of-conduct

    monamourM 1 Reply Last reply
    1
    • jsulmJ jsulm

      @monamour I only see one loop

      monamourM Offline
      monamourM Offline
      monamour
      wrote on last edited by
      #3

      @jsulm Sorry,I modified the question.

      jsulmJ 1 Reply Last reply
      0
      • monamourM monamour

        @jsulm Sorry,I modified the question.

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by jsulm
        #4

        @monamour If the first if is true you do return
        Also both if conditions are identical - what's the point?

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        monamourM 1 Reply Last reply
        0
        • jsulmJ jsulm

          @monamour If the first if is true you do return
          Also both if conditions are identical - what's the point?

          monamourM Offline
          monamourM Offline
          monamour
          wrote on last edited by
          #5

          @jsulm "The first if" should execute when the LINEDIT is blank. " The second if" will execute when the LINEDIT is NOT blank.

          jsulmJ 1 Reply Last reply
          0
          • monamourM monamour

            @jsulm "The first if" should execute when the LINEDIT is blank. " The second if" will execute when the LINEDIT is NOT blank.

            jsulmJ Offline
            jsulmJ Offline
            jsulm
            Lifetime Qt Champion
            wrote on last edited by jsulm
            #6

            @monamour Looks like you edited the code, because before both if were identical.
            Actually you can do it like this:

            if proc.name() not in x:
                            QMessageBox.information(self,"Error",'Blank!')
                            return
            
            else:
                            proc.kill()
                            QMessageBox.information(self, "Success", x2 +"has been terminated"
                            return
            

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            monamourM 1 Reply Last reply
            0
            • jsulmJ jsulm

              @monamour Looks like you edited the code, because before both if were identical.
              Actually you can do it like this:

              if proc.name() not in x:
                              QMessageBox.information(self,"Error",'Blank!')
                              return
              
              else:
                              proc.kill()
                              QMessageBox.information(self, "Success", x2 +"has been terminated"
                              return
              
              monamourM Offline
              monamourM Offline
              monamour
              wrote on last edited by monamour
              #7

              @jsulm Yes, I edited the code. It is same, not solved.

              jsulmJ 1 Reply Last reply
              0
              • monamourM monamour

                @jsulm Yes, I edited the code. It is same, not solved.

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #8

                @monamour Did you check what x is and what proc.name is? Just print out both and see.

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                monamourM 1 Reply Last reply
                0
                • jsulmJ jsulm

                  @monamour Did you check what x is and what proc.name is? Just print out both and see.

                  monamourM Offline
                  monamourM Offline
                  monamour
                  wrote on last edited by
                  #9

                  @jsulm

                  1- proc.name after "IF CONDITIONS"

                  input

                  print(x)
                  print(proc.name())

                  Output

                  notepad.exe
                  notepad.exe

                  2-The full proc.name after "FOR LOOP"

                  input

                  print(proc.name())

                  output

                  System Idle Process
                  System
                  svchost.exe
                  smss.exe
                  csrss.exe
                  MOM.exe
                  wininit.exe
                  csrss.exe
                  services.exe
                  lsass.exe
                  lsm.exe
                  python.exe
                  explorer.exe
                  svchost.exe
                  svchost.exe
                  chrome.exe
                  WSHelper.exe
                  cbInterface.exe
                  taskhost.exe
                  notepad.exe
                  PresentationFontCache.exe
                  SearchFilterHost.exe
                  chrome.exe
                  chrome.exe
                  designer.exe
                  thunderbird.exe
                  fsnotifier64.exe
                  conhost.exe
                  chrome.exe
                  svchost.exe
                  notepad++.exe
                  VSSVC.exe
                  pycharm64.exe
                  chrome.exe
                  chrome.exe
                  SearchProtocolHost.exe
                  conhost.exe
                  chrome.exe

                  Process finished with exit code 0

                  jsulmJ 1 Reply Last reply
                  0
                  • monamourM monamour

                    @jsulm

                    1- proc.name after "IF CONDITIONS"

                    input

                    print(x)
                    print(proc.name())

                    Output

                    notepad.exe
                    notepad.exe

                    2-The full proc.name after "FOR LOOP"

                    input

                    print(proc.name())

                    output

                    System Idle Process
                    System
                    svchost.exe
                    smss.exe
                    csrss.exe
                    MOM.exe
                    wininit.exe
                    csrss.exe
                    services.exe
                    lsass.exe
                    lsm.exe
                    python.exe
                    explorer.exe
                    svchost.exe
                    svchost.exe
                    chrome.exe
                    WSHelper.exe
                    cbInterface.exe
                    taskhost.exe
                    notepad.exe
                    PresentationFontCache.exe
                    SearchFilterHost.exe
                    chrome.exe
                    chrome.exe
                    designer.exe
                    thunderbird.exe
                    fsnotifier64.exe
                    conhost.exe
                    chrome.exe
                    svchost.exe
                    notepad++.exe
                    VSSVC.exe
                    pycharm64.exe
                    chrome.exe
                    chrome.exe
                    SearchProtocolHost.exe
                    conhost.exe
                    chrome.exe

                    Process finished with exit code 0

                    jsulmJ Offline
                    jsulmJ Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on last edited by
                    #10

                    @monamour Maybe both strings use different encodings?

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    monamourM 2 Replies Last reply
                    0
                    • jsulmJ jsulm

                      @monamour Maybe both strings use different encodings?

                      monamourM Offline
                      monamourM Offline
                      monamour
                      wrote on last edited by
                      #11

                      @jsulm Means? because both of them are strings.

                      jsulmJ 1 Reply Last reply
                      0
                      • jsulmJ jsulm

                        @monamour Maybe both strings use different encodings?

                        monamourM Offline
                        monamourM Offline
                        monamour
                        wrote on last edited by
                        #12

                        @jsulm If I make two for loops, it will work. What is the common sense in this ?

                        1 Reply Last reply
                        0
                        • monamourM monamour

                          @jsulm Means? because both of them are strings.

                          jsulmJ Offline
                          jsulmJ Offline
                          jsulm
                          Lifetime Qt Champion
                          wrote on last edited by jsulm
                          #13

                          @monamour said in For loop problem!:

                          Means? because both of them are strings

                          I mean different string encodings like Latin1, UTF-8, ...
                          Can you try to print out type(x) and type(proc.name())?
                          "If I make two for loops, it will work. What is the common sense in this ?" - I don't know what you mean.

                          https://forum.qt.io/topic/113070/qt-code-of-conduct

                          monamourM 2 Replies Last reply
                          0
                          • jsulmJ jsulm

                            @monamour said in For loop problem!:

                            Means? because both of them are strings

                            I mean different string encodings like Latin1, UTF-8, ...
                            Can you try to print out type(x) and type(proc.name())?
                            "If I make two for loops, it will work. What is the common sense in this ?" - I don't know what you mean.

                            monamourM Offline
                            monamourM Offline
                            monamour
                            wrote on last edited by monamour
                            #14
                            This post is deleted!
                            1 Reply Last reply
                            0
                            • jsulmJ jsulm

                              @monamour said in For loop problem!:

                              Means? because both of them are strings

                              I mean different string encodings like Latin1, UTF-8, ...
                              Can you try to print out type(x) and type(proc.name())?
                              "If I make two for loops, it will work. What is the common sense in this ?" - I don't know what you mean.

                              monamourM Offline
                              monamourM Offline
                              monamour
                              wrote on last edited by monamour
                              #15

                              @jsulm

                              for proc in psutil.process_iter():
                                          if proc.name()==x:
                                              proc.kill()
                                              QMessageBox.information(self, "Success", x2 +"has been terminated")
                                              return
                              
                               for proc in psutil.process_iter():
                                           if proc.name()!=x:
                                               QMessageBox.information(self, "Error","The process " +x2 + " is not found")
                                               return
                              
                              1 Reply Last reply
                              0

                              • Login

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Search
                              • Get Qt Extensions
                              • Unsolved