質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

3822閲覧

Python wxPythonのGUI内のハイパーリンクについて

I_am_4a

総合スコア21

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/01/13 06:49

wxPythonで作るGUI内にハイパーリンクを挿入したいです。

Python

1#!/usr/bin/python 2 3 4import wx 5from wx.lib.stattext import GenStaticText 6import webbrowser 7 8 9class Link(GenStaticText): 10 11 def __init__(self, *args, **kw): 12 super(Link, self).__init__(*args, **kw) 13 14 self.font1 = wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD, True, 'Verdana') 15 self.font2 = wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD, False, 'Verdana') 16 17 self.SetFont(self.font2) 18 self.SetForegroundColour('#0000ff') 19 20 self.Bind(wx.EVT_MOUSE_EVENTS, self.OnMouseEvent) 21 self.Bind(wx.EVT_MOTION, self.OnMouseEvent) 22 23 def SetUrl(self, url): 24 25 self.url = url 26 27 28 def OnMouseEvent(self, e): 29 30 if e.Moving(): 31 32 self.SetCursor(wx.StockCursor(wx.CURSOR_HAND)) 33 self.SetFont(self.font1) 34 35 elif e.LeftUp(): 36 37 webbrowser.open_new(self.url) 38 39 else: 40 self.SetCursor(wx.NullCursor) 41 self.SetFont(self.font2) 42 43 e.Skip() 44 45 46class Example(wx.Frame): 47 48 def __init__(self, *args, **kw): 49 super(Example, self).__init__(*args, **kw) 50 51 self.InitUI() 52 53 def InitUI(self): 54 55 panel = wx.Panel(self) 56 lnk = Link(panel, label='ZetCode', pos=(10, 60)) 57 lnk.SetUrl('http://www.zetcode.com') 58 59 motto = GenStaticText(panel, label='Knowledge only matters', pos=(10, 30)) 60 motto.SetFont(wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD, False, 'Verdana')) 61 62 self.SetSize((220, 150)) 63 self.SetTitle('A Hyperlink') 64 self.Centre() 65 self.Show(True) 66 67 68def main(): 69 70 ex = wx.App() 71 Example(None) 72 ex.MainLoop() 73 74 75if __name__ == '__main__': 76 main()

上がZetCodeにあったサンプルコードなのですが、これだと挿入位置を設定できません。

できれば、~~~~: hyperlinkhyperlink部分のみリンクを設定したいのですが…ご存知の方はいらっしゃいますか?

どうすればよいのか教えていただけると嬉しいです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

Python

1import wx 2import webbrowser 3 4# 省略… 5 6def event(e): 7 if e.LeftUp(): 8 webbrowser.open("https://example.com/") 9 e.Skip() 10 11# 省略… 12 13box = wx.BoxSizer(wx.VERTICAL) 14 15text = wx.StaticText(panel4, -1, "URL: ") 16url = wx.StaticText(panel4, -1, "(Your URL title here...)") 17url.Bind(wx.EVT_MOUSE_EVENTS, event) 18url.Bind(wx.EVT_MOTION, event) 19font = wx.Font(8, wx.FONTFAMILY_SWISS, wx.ITALIC, wx.FONTWEIGHT_LIGHT, True) 20url.SetFont(font) 21url.SetForegroundColour('#0000ff') 22box1 = wx.BoxSizer(wx.HORIZONTAL) 23box1.Add(text_app_description2) 24box1.Add(text_app_description2_url) 25 26box.Add(box1) 27 28# 省略… 29

とすることで、目的通りの結果になりました。
ありがとうございました。

投稿2018/01/13 07:21

I_am_4a

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問