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. Python3.7 How to get URL as string
Qt 6.11 is out! See what's new in the release blog

Python3.7 How to get URL as string

Scheduled Pinned Locked Moved Solved Qt for Python
14 Posts 4 Posters 4.8k Views
  • 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.
  • J Junhi

    Question

    Here is snapshot of my code:

    QtextBrowser.png

    View Detail is configured as
    '<a href =' + '"' + 'http://' + str(var[0]) + '.' + str(var[1]) + '.' + str(var[2]) + '"' + '>' + 'View Detail' + '</a>'

    I want to get URL address as text when I click View Detail link.

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

    @Junhi So, for the first one URL would be: http://LGE0010924.RRUS12-12-C7-S5B.RRUS12B8 ?
    This is actually quite simple in your case as everything is separated by ':'. So, you can split the string like str.split(":") and use the second part as value (str.split(":")[1]).

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

    J 1 Reply Last reply
    0
    • jsulmJ jsulm

      @Junhi So, for the first one URL would be: http://LGE0010924.RRUS12-12-C7-S5B.RRUS12B8 ?
      This is actually quite simple in your case as everything is separated by ':'. So, you can split the string like str.split(":") and use the second part as value (str.split(":")[1]).

      J Offline
      J Offline
      Junhi
      wrote on last edited by
      #5

      @jsulm Thank you jsulm, but that is not my want.

      1. If I click [View Detail], anchorClicked event may occur.

      2. The event send signal to Mainwindow.show_monitor_temp

        self.dis_message.anchorClicked['QUrl'].connect(MainWindow.show_monitor_temp)

      3. At the Mainwindow.show_monitor_temp(), I want to know how to retrieve URL information, sent by anchorClicked signal. <-- That is my question.

      jsulmJ JonBJ 2 Replies Last reply
      0
      • J Junhi

        @jsulm Thank you jsulm, but that is not my want.

        1. If I click [View Detail], anchorClicked event may occur.

        2. The event send signal to Mainwindow.show_monitor_temp

          self.dis_message.anchorClicked['QUrl'].connect(MainWindow.show_monitor_temp)

        3. At the Mainwindow.show_monitor_temp(), I want to know how to retrieve URL information, sent by anchorClicked signal. <-- That is my question.

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

        @Junhi So, you want to download data from URL?
        See https://doc.qt.io/qt-5/qnetworkaccessmanager.html

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

        1 Reply Last reply
        0
        • J Junhi

          @jsulm Thank you jsulm, but that is not my want.

          1. If I click [View Detail], anchorClicked event may occur.

          2. The event send signal to Mainwindow.show_monitor_temp

            self.dis_message.anchorClicked['QUrl'].connect(MainWindow.show_monitor_temp)

          3. At the Mainwindow.show_monitor_temp(), I want to know how to retrieve URL information, sent by anchorClicked signal. <-- That is my question.

          JonBJ Offline
          JonBJ Offline
          JonB
          wrote on last edited by
          #7

          @Junhi
          Not sure if you're asking about what @jsulm has pointed you to, or if you are asking how you know what the anchor clicked was, in which case https://doc.qt.io/qt-5/qtextbrowser.html#anchorClicked shows void QTextBrowser::anchorClicked(const QUrl &link) signal passes the QUrl link to your slot?

          J 1 Reply Last reply
          0
          • JonBJ JonB

            @Junhi
            Not sure if you're asking about what @jsulm has pointed you to, or if you are asking how you know what the anchor clicked was, in which case https://doc.qt.io/qt-5/qtextbrowser.html#anchorClicked shows void QTextBrowser::anchorClicked(const QUrl &link) signal passes the QUrl link to your slot?

            J Offline
            J Offline
            Junhi
            wrote on last edited by
            #8

            @JonB Yes, I think QUrl information passes to my slot(MainWindow.show_monitor_temp).
            self.dis_message.anchorClicked['QUrl'].connect(MainWindow.show_monitor_temp)
            But it seems not work properly.

            JonBJ 1 Reply Last reply
            0
            • J Junhi

              @JonB Yes, I think QUrl information passes to my slot(MainWindow.show_monitor_temp).
              self.dis_message.anchorClicked['QUrl'].connect(MainWindow.show_monitor_temp)
              But it seems not work properly.

              JonBJ Offline
              JonBJ Offline
              JonB
              wrote on last edited by JonB
              #9

              @Junhi said in Python3.7 How to get URL as string:

              But it seems not work properly.

              What does that mean, how would you like us to help on that?? Do you think it would help us if you showed us your slot code?

              Meanwhile, you don't tell us whether you are using PySide2 or PyQt5. Which one is that self.dis_message.anchorClicked['QUrl'].connect() syntax for, with the ['QUrl']? I have not (so far) needed to use that syntax in either one.

              J 1 Reply Last reply
              2
              • JonBJ JonB

                @Junhi said in Python3.7 How to get URL as string:

                But it seems not work properly.

                What does that mean, how would you like us to help on that?? Do you think it would help us if you showed us your slot code?

                Meanwhile, you don't tell us whether you are using PySide2 or PyQt5. Which one is that self.dis_message.anchorClicked['QUrl'].connect() syntax for, with the ['QUrl']? I have not (so far) needed to use that syntax in either one.

                J Offline
                J Offline
                Junhi
                wrote on last edited by
                #10

                @JonB Sorry, It is my first time of python programming. There may be many mistake ..
                I use PyQt5.

                This is part of my code.

                ===== main.py ======
                import sys
                import os
                import sqlite3
                import time
                from PyQt5.QtCore import pyqtSlot, QDate,QUrl
                from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QCalendarWidget, QDialog, QCheckBox
                from PyQt5 import QtCore, QtGui, QtWidgets
                from monitor import Ui_MainWindow

                class Form(QMainWindow, Ui_MainWindow):
                def init(self, parent=None):
                super().init()
                def show_monitor_temp(self):

                    print("show_monitor_temp")
                    print(QUrl().toString())
                

                ==== monitor.py (designed by QT Designer 5.13) ====
                from PyQt5 import QtCore, QtGui, QtWidgets

                class Ui_MainWindow(object):
                def setupUi(self, MainWindow):
                self.dis_message = QtWidgets.QTextBrowser(self.splitter)
                self.dis_message.anchorClicked['QUrl'].connect(MainWindow.show_monitor_temp)

                JonBJ 1 Reply Last reply
                0
                • J Junhi

                  @JonB Sorry, It is my first time of python programming. There may be many mistake ..
                  I use PyQt5.

                  This is part of my code.

                  ===== main.py ======
                  import sys
                  import os
                  import sqlite3
                  import time
                  from PyQt5.QtCore import pyqtSlot, QDate,QUrl
                  from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QCalendarWidget, QDialog, QCheckBox
                  from PyQt5 import QtCore, QtGui, QtWidgets
                  from monitor import Ui_MainWindow

                  class Form(QMainWindow, Ui_MainWindow):
                  def init(self, parent=None):
                  super().init()
                  def show_monitor_temp(self):

                      print("show_monitor_temp")
                      print(QUrl().toString())
                  

                  ==== monitor.py (designed by QT Designer 5.13) ====
                  from PyQt5 import QtCore, QtGui, QtWidgets

                  class Ui_MainWindow(object):
                  def setupUi(self, MainWindow):
                  self.dis_message = QtWidgets.QTextBrowser(self.splitter)
                  self.dis_message.anchorClicked['QUrl'].connect(MainWindow.show_monitor_temp)

                  JonBJ Offline
                  JonBJ Offline
                  JonB
                  wrote on last edited by JonB
                  #11

                  @Junhi
                  [I think you have written which code is in which file the wrong way round.]

                  Your connection should be:

                  self.dis_message.anchorClicked.connect(MainWindow.show_monitor_temp)
                  
                  • I don't think there are any other overloads of anchorClicked(), or at least we are using the default one, so we don't need the anchorClicked['QUrl']. You can put it back in if you prefer/I am mistaken.

                  Your slot should be:

                  @pyqtslot(QUrl)   # you can probably omit this, for now
                                    # or, you might need @pyqtslot('QUrl')
                  def show_monitor_temp(self, url):
                      print("show_monitor_temp")
                      print(url.toString())  # maybe just: print(str(url))
                  
                  • See how the slot gets the QUrl as a parameter, because the signal passes it.

                  Reference for PyQt5 signals/slots is https://www.riverbankcomputing.com/static/Docs/PyQt5/signals_slots.html.

                  Above is quite untested. Give it a go and see how you fare. The important thing is to grasp how the slot receives the QUrl clicked on from the signal as a parameter, which is what you were missing. This is the only bit you have to change, other than that your code is fine.

                  1 Reply Last reply
                  1
                  • J Offline
                    J Offline
                    Junhi
                    wrote on last edited by
                    #12

                    @Denni-0 @JonB

                    I solved the problem by changing

                    self.dis_message.anchorClicked['QUrl'].connect(MainWindow.show_monitor_temp) ->
                    self.dis_message.anchorClicked.connect(MainWindow.show_monitor_temp)

                    @pyqtslot() -> @pyqtslot('QUrl')

                    Thank you for your kind help.

                    JonBJ 1 Reply Last reply
                    0
                    • J Junhi

                      @Denni-0 @JonB

                      I solved the problem by changing

                      self.dis_message.anchorClicked['QUrl'].connect(MainWindow.show_monitor_temp) ->
                      self.dis_message.anchorClicked.connect(MainWindow.show_monitor_temp)

                      @pyqtslot() -> @pyqtslot('QUrl')

                      Thank you for your kind help.

                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by JonB
                      #13

                      @Junhi
                      And by adding url as formal parameter to your def show_monitor_temp(self, url):! Now you know how slots receive any arguments from signals.

                      J 1 Reply Last reply
                      0
                      • JonBJ JonB

                        @Junhi
                        And by adding url as formal parameter to your def show_monitor_temp(self, url):! Now you know how slots receive any arguments from signals.

                        J Offline
                        J Offline
                        Junhi
                        wrote on last edited by
                        #14

                        @JonB Yes, right

                        adding url as formal parameter to def show_monitor_temp(self, url):

                        :-)

                        1 Reply Last reply
                        1

                        • Login

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