да ,он там ,но я дурак в хал не ставил перед его mygui.nkp писал(а):ну что то типа mygui.button
поробовал ,работает ,сейчас сделаю за halui и попробую
да ,он там ,но я дурак в хал не ставил перед его mygui.nkp писал(а):ну что то типа mygui.button
У тебя "подгонка" у меня "стъпка" ,все равно откуда ее взят ,при нажатие кнопочка вправоnkp писал(а):а adjustment настроен??
можно, например, если к GUI привязать python модуль, в котором прописать функции реагирования на нажатия соответствующих кнопок, типа такdinkata писал(а): хочется открьйват Classicladder ,Halshow ,Calibration как в gmoccapy ,можно ли сделат с етие кнопочки ?
Код: Выделить всё
def on_btn_show_hal_clicked( self, data = None ):
p = os.popen( "tclsh %s/bin/halshow.tcl &" % TCLPATH )
def on_btn_calibration_clicked( self, data = None ):
p = os.popen( "tclsh %s/bin/emccalib.tcl -- -ini %s > /dev/null &" % ( TCLPATH, sys.argv[2] ), "w" )
def on_btn_hal_meter_clicked( self, data = None ):
p = os.popen( "halmeter &" )
def on_btn_status_clicked( self, data = None ):
p = os.popen( "linuxcnctop > /dev/null &", "w" )
def on_btn_hal_scope_clicked( self, data = None ):
p = os.popen( "halscope > /dev/null &", "w" )
def on_btn_classicladder_clicked( self, data = None ):
p = os.popen( "classicladder &", "w" )
извините ,я в питонеverser писал(а):нажатия соответствующих кнопок,
здесь добавил твой скриптnkp писал(а):в папку /bin ложим файл mygui с таким содержимым:
Код: Выделить всё
#!/usr/bin/python
import pygtk
pygtk.require("2.0")
import gtk
import gladevcp.makepins
from gladevcp.gladebuilder import GladeBuilder
import hal
from subprocess import *
import sys,os
BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), ".."))
datadir = os.path.join(BASE, "usr","share", "linuxcnc")
xmlname = os.path.join(datadir,"mygui.glade")
class Widgets:
def __init__(self, xml):
self._xml = xml
def __getattr__(self, attr):
r = self._xml.get_object(attr)
if r is None: raise AttributeError, "No widget %r" % attr
return r
def __getitem__(self, attr):
r = self._xml.get_object(attr)
if r is None: raise IndexError, "No widget %r" % attr
return r
class Mygui(object):
def on_window1_destroy(self, widget, data=None):
print "quit++"
gtk.main_quit()
def __init__(self):
self.builder = gtk.Builder()
self.builder.add_from_file(xmlname)
halcomp = hal.component("mygui")
self.widgets = Widgets(self.builder)
self.builder.connect_signals(self)
self.window = self.builder.get_object("window1")
self.window.show()
panel = gladevcp.makepins.GladePanel( halcomp, xmlname, self.builder, None)
def on_btn_show_hal_clicked( self, data = None ):
p = os.popen( "tclsh %s/bin/halshow.tcl &" % TCLPATH )
def on_btn_calibration_clicked( self, data = None ):
p = os.popen( "tclsh %s/bin/emccalib.tcl -- -ini %s > /dev/null &" % ( TCLPATH, sys.argv[2] ), "w" )
def on_btn_hal_meter_clicked( self, data = None ):
p = os.popen( "halmeter &" )
def on_btn_status_clicked( self, data = None ):
p = os.popen( "linuxcnctop > /dev/null &", "w" )
def on_btn_hal_scope_clicked( self, data = None ):
p = os.popen( "halscope > /dev/null &", "w" )
def on_btn_classicladder_clicked( self, data = None ):
p = os.popen( "classicladder &", "w" )
if __name__ == "__main__":
app = Mygui()
res = os.spawnvp(os.P_WAIT, "halcmd", ["halcmd", "-f", "/home/zmm/linuxcnc/configs/MyMachine/mode.hal"])
if res: raise SystemExit, res
gtk.main()
В Glade редакторе справа в окне свойств вкладка "Сигнали" вставить для сигнала "...clicked" имя on_btn_classicladder_clicked и то же для других кнопок проделать.dinkata писал(а):как сделат mygui.hal_button23 = on_btn_classicladder_clicked
надо еще задать где-то вначале python программы глобальную переменнуюdinkata писал(а): ..работает ..
все ,кроме halshow и calibration
откуда ето ......
Код: Выделить всё
TCLPATH = os.environ['LINUXCNC_TCL_DIR']
Код: Выделить всё
p = os.popen( "tclsh %s/bin/emccalib.tcl -- -ini %s > /dev/null &" % ( os.environ['LINUXCNC_TCL_DIR'], sys.argv[2] ), "w" )
или так.. тогда еще и другой вызов соответственно подправитьUAVpilot писал(а):а так не кошерно будет?
Код: Выделить всё
p = os.popen( "tclsh %s/bin/halshow.tcl &" % os.environ['LINUXCNC_TCL_DIR'] )