Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-Gtk-从剪贴板粘贴_Python_User Interface_Gtk_Glade - Fatal编程技术网

Python-Gtk-从剪贴板粘贴

Python-Gtk-从剪贴板粘贴,python,user-interface,gtk,glade,Python,User Interface,Gtk,Glade,在用python和Glade3构建一个简单的GUI视频下载程序时,我一直坚持使用图标粘贴到文本输入框中 应用程序,并粘贴图标 python代码: # !/usr/python import sys import os import subprocess as sp try: from gi.repository import Gtk, Gdk except: print('Gtk not available') sys.exit(1) try: import

在用python和Glade3构建一个简单的GUI视频下载程序时,我一直坚持使用图标粘贴到文本输入框中

应用程序,并粘贴图标

python代码:

# !/usr/python

import sys
import os
import subprocess as sp
try:
    from gi.repository import Gtk, Gdk
except:
    print('Gtk not available')
    sys.exit(1)
try:
    import pyGtk
    pyGtk.require('2.0')
except:
    pass



class VideoDownloader:

  def on_mainwindow_destroy(self, object, data=None):
    print "quit with cancel"
    Gtk.main_quit()

  def __init__(self):
    self.gladefile = "lib/videodownloder.glade" 
    self.builder = Gtk.Builder() 
    self.builder.add_from_file(self.gladefile) 
    self.builder.connect_signals(self)
    self.go = self.builder.get_object
    self.window = self.go("mainwindow")    
    self.window.show() 
    self.okbtn = self.go("okbutton")
    self.cancelbtn = self.go("cancelbutton")
    #self.restartswitch = self.go("restartswitch")
    self.contswitch = self.go("contswitch")
    self.vlcswitch = self.go("vlcswitch")
    self.urlentry = self.go("urlentry")
    self.filechooser = self.go("filechooser")
    self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)

  def on_urlentry_activate(self, widget):
    url = self.urlentry.get_text()
    print("the url is:" + url)

  def on_urlentry_icon_press(self):
    text = self.clipboard.set_text(self.urlentry.get_text(), -1)
    print("the urlentry paste icon was clicked | 'text' ")

  def on_urlentry_icon_press(self):
    text = self.clipboard.wait_for_text()
    print("the urlentry paste icon was clicked | 'text' ")
    if text != None:
      self.urlentry.set_text(text)
      print(" 'text' has been pasted to the urlentry")
    else:
      print("No text on the clipboard")

  def on_filechooser_file_activated(self, widget):
    myfile = self.filechooser.get_uri()
    print("the file is: " + myfile)

  def on_vlcswitch_activate(self, widget):
    print("VLC Switch has been activated")

  def on_contswitch_activate(self, widget):
    print("Continue switch has been acivated")

  def on_quitbutton_clicked(self, button):
    print("quit with the close button")
    Gtk.main_quit()


  def on_okbutton_clicked(self, button):
    myfile = self.filechooser.get_uri()
    url = self.urlentry.get_text()
    wgetcmd = ("wget -O 'myfile ' 'url' ")
    print("ok button has been clicked")
    print("wget will now be run with your args: " +myfile+url)
    os.system(wgetcmd)

if __name__ == "__main__":
  print("videodownloader is running")
  notify = os.system("notify-send --expire-time=5000 --icon='img/vid-down-logo.png' --app-name=VideoDownloader 'VideoDownloader' 'The VideoDownloader app is now running and ready!'")
  notify
  main = VideoDownloader()
  Gtk.main()
  print("videodownloader has stopped running")
当我运行代码时,它大部分工作正常,但当我单击粘贴图标时,我得到一个错误:

TypeError: on_urlentry_icon_press() takes exactly 1 argument (4 given)  
我对python和glade相当陌生,所以我可能犯了一个基本的错误,但我不知道是什么错误以及错误的含义。我已经搜索过了,但只找到了没有帮助的建议。

有关如何解决此问题的任何建议,请?

您当前的图标按下时的
方法只接受
self
参数,但它应该需要多个参数,因为它连接到图标按下时的
信号

在中,您可以看到需要:

  • 条目(Gtk.条目的参考)
  • 位置(无论是主图标还是次图标)
  • 事件(例如,是否双击)
所以它应该是这样的:

def on_urlentry_icon_press(self, entry, position, event):
    print('urlentry icon clicked')

请编辑问题标题-它与从剪贴板粘贴无关。当遇到类似错误时,请将函数定义为(在本例中,*args)
然后检查args,看看你得到了什么。如果你不需要args的任何东西,你甚至可以将定义保留在那里。谢谢@elya5,非常好的信息。